summaryrefslogtreecommitdiff
path: root/src/managers
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-10-26 02:06:13 +0100
committerVaxry <vaxry@vaxry.net>2024-10-26 02:06:13 +0100
commitd5689bb53935ff1adbbfc9fdf5b1f542ce39efb2 (patch)
tree9df10d93160b5f6dc8c087d56b6face18809b56a /src/managers
parente5384774a8258e44cc7f7b690ce4f6ad1f92b562 (diff)
internal: cleanup CMonitor usage and fix a few ref hogs
ref #8221
Diffstat (limited to 'src/managers')
-rw-r--r--src/managers/PointerManager.cpp16
-rw-r--r--src/managers/PointerManager.hpp22
2 files changed, 19 insertions, 19 deletions
diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp
index ae90349b..0d6e0206 100644
--- a/src/managers/PointerManager.cpp
+++ b/src/managers/PointerManager.cpp
@@ -69,7 +69,7 @@ void CPointerManager::unlockSoftwareForMonitor(PHLMONITOR mon) {
updateCursorBackend();
}
-bool CPointerManager::softwareLockedFor(SP<CMonitor> mon) {
+bool CPointerManager::softwareLockedFor(PHLMONITOR mon) {
auto state = stateFor(mon);
return state->softwareLocks > 0 || state->hardwareFailed;
}
@@ -82,7 +82,7 @@ bool CPointerManager::hasCursor() {
return currentCursorImage.pBuffer || currentCursorImage.surface;
}
-SP<CPointerManager::SMonitorPointerState> CPointerManager::stateFor(SP<CMonitor> mon) {
+SP<CPointerManager::SMonitorPointerState> CPointerManager::stateFor(PHLMONITOR mon) {
auto it = std::find_if(monitorStates.begin(), monitorStates.end(), [mon](const auto& other) { return other->monitor == mon; });
if (it == monitorStates.end())
return monitorStates.emplace_back(makeShared<CPointerManager::SMonitorPointerState>(mon));
@@ -503,7 +503,7 @@ SP<Aquamarine::IBuffer> CPointerManager::renderHWCursorBuffer(SP<CPointerManager
return buf;
}
-void CPointerManager::renderSoftwareCursorsFor(SP<CMonitor> pMonitor, timespec* now, CRegion& damage, std::optional<Vector2D> overridePos) {
+void CPointerManager::renderSoftwareCursorsFor(PHLMONITOR pMonitor, timespec* now, CRegion& damage, std::optional<Vector2D> overridePos) {
if (!hasCursor())
return;
@@ -538,7 +538,7 @@ void CPointerManager::renderSoftwareCursorsFor(SP<CMonitor> pMonitor, timespec*
currentCursorImage.surface->resource()->frame(now);
}
-Vector2D CPointerManager::getCursorPosForMonitor(SP<CMonitor> pMonitor) {
+Vector2D CPointerManager::getCursorPosForMonitor(PHLMONITOR pMonitor) {
return CBox{pointerPos - pMonitor->vecPosition, {0, 0}}
.transform(wlTransformToHyprutils(invertTransform(pMonitor->transform)), pMonitor->vecTransformedSize.x / pMonitor->scale,
pMonitor->vecTransformedSize.y / pMonitor->scale)
@@ -546,7 +546,7 @@ Vector2D CPointerManager::getCursorPosForMonitor(SP<CMonitor> pMonitor) {
pMonitor->scale;
}
-Vector2D CPointerManager::transformedHotspot(SP<CMonitor> pMonitor) {
+Vector2D CPointerManager::transformedHotspot(PHLMONITOR pMonitor) {
if (!pMonitor->cursorSwapchain)
return {}; // doesn't matter, we have no hw cursor, and this is only for hw cursors
@@ -556,7 +556,7 @@ Vector2D CPointerManager::transformedHotspot(SP<CMonitor> pMonitor) {
.pos();
}
-CBox CPointerManager::getCursorBoxLogicalForMonitor(SP<CMonitor> pMonitor) {
+CBox CPointerManager::getCursorBoxLogicalForMonitor(PHLMONITOR pMonitor) {
return getCursorBoxGlobal().translate(-pMonitor->vecPosition);
}
@@ -678,7 +678,7 @@ void CPointerManager::move(const Vector2D& deltaLogical) {
void CPointerManager::warpAbsolute(Vector2D abs, SP<IHID> dev) {
- SP<CMonitor> currentMonitor = g_pCompositor->m_pLastMonitor.lock();
+ PHLMONITOR currentMonitor = g_pCompositor->m_pLastMonitor.lock();
if (!currentMonitor || !dev)
return;
@@ -1055,7 +1055,7 @@ void CPointerManager::detachTablet(SP<CTablet> tablet) {
std::erase_if(tabletListeners, [tablet](const auto& e) { return e->tablet.expired() || e->tablet == tablet; });
}
-void CPointerManager::damageCursor(SP<CMonitor> pMonitor) {
+void CPointerManager::damageCursor(PHLMONITOR pMonitor) {
for (auto const& mw : monitorStates) {
if (mw->monitor != pMonitor)
continue;
diff --git a/src/managers/PointerManager.hpp b/src/managers/PointerManager.hpp
index aef2490d..a0cd0fff 100644
--- a/src/managers/PointerManager.hpp
+++ b/src/managers/PointerManager.hpp
@@ -43,18 +43,18 @@ class CPointerManager {
void setCursorSurface(SP<CWLSurface> buf, const Vector2D& hotspot);
void resetCursorImage(bool apply = true);
- void lockSoftwareForMonitor(SP<CMonitor> pMonitor);
- void unlockSoftwareForMonitor(SP<CMonitor> pMonitor);
+ void lockSoftwareForMonitor(PHLMONITOR pMonitor);
+ void unlockSoftwareForMonitor(PHLMONITOR pMonitor);
void lockSoftwareAll();
void unlockSoftwareAll();
- bool softwareLockedFor(SP<CMonitor> pMonitor);
+ bool softwareLockedFor(PHLMONITOR pMonitor);
- void renderSoftwareCursorsFor(SP<CMonitor> pMonitor, timespec* now, CRegion& damage /* logical */, std::optional<Vector2D> overridePos = {} /* monitor-local */);
+ void renderSoftwareCursorsFor(PHLMONITOR pMonitor, timespec* now, CRegion& damage /* logical */, std::optional<Vector2D> overridePos = {} /* monitor-local */);
// this is needed e.g. during screensharing where
// the software cursors aren't locked during the cursor move, but they
// are rendered later.
- void damageCursor(SP<CMonitor> pMonitor);
+ void damageCursor(PHLMONITOR pMonitor);
//
Vector2D position();
@@ -78,13 +78,13 @@ class CPointerManager {
Vector2D closestValid(const Vector2D& pos);
// returns the thing in device coordinates. Is NOT offset by the hotspot, relies on set_cursor with hotspot.
- Vector2D getCursorPosForMonitor(SP<CMonitor> pMonitor);
+ Vector2D getCursorPosForMonitor(PHLMONITOR pMonitor);
// returns the thing in logical coordinates of the monitor
- CBox getCursorBoxLogicalForMonitor(SP<CMonitor> pMonitor);
+ CBox getCursorBoxLogicalForMonitor(PHLMONITOR pMonitor);
// returns the thing in global coords
CBox getCursorBoxGlobal();
- Vector2D transformedHotspot(SP<CMonitor> pMonitor);
+ Vector2D transformedHotspot(PHLMONITOR pMonitor);
SP<CTexture> getCurrentCursorTexture();
@@ -160,10 +160,10 @@ class CPointerManager {
Vector2D storedUnaccel = {0, 0};
struct SMonitorPointerState {
- SMonitorPointerState(SP<CMonitor> m) : monitor(m) {}
+ SMonitorPointerState(PHLMONITOR m) : monitor(m) {}
~SMonitorPointerState() {}
- WP<CMonitor> monitor;
+ PHLMONITORREF monitor;
int softwareLocks = 0;
bool hardwareFailed = false;
@@ -176,7 +176,7 @@ class CPointerManager {
};
std::vector<SP<SMonitorPointerState>> monitorStates;
- SP<SMonitorPointerState> stateFor(SP<CMonitor> mon);
+ SP<SMonitorPointerState> stateFor(PHLMONITOR mon);
bool attemptHardwareCursor(SP<SMonitorPointerState> state);
SP<Aquamarine::IBuffer> renderHWCursorBuffer(SP<SMonitorPointerState> state, SP<CTexture> texture);
bool setHWCursorBuffer(SP<SMonitorPointerState> state, SP<Aquamarine::IBuffer> buf);