diff options
| author | Lucas Reis <lucas.reis091997@gmail.com> | 2024-06-19 10:24:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-19 16:24:28 +0200 |
| commit | 20a465f69d342c5caead27df696d228492ea02e8 (patch) | |
| tree | 9dcb0bb9dad50ad3e148b14b372fda799fc38ef0 /src/helpers/Monitor.cpp | |
| parent | fb15b7aa2a9bba0f0693f84d0c65d386942583f8 (diff) | |
pointer: use software rendering when monitor is mirrored (#6587)
* pointer_manager: add lock/unlock software wrappers that receive the raw pointer
* monitor: lock/unlock software pointer rendering when adding/removing mirrored screens
* use relative path in includes
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index da6da873..e99e16ef 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -6,6 +6,7 @@ #include "../devices/ITouch.hpp" #include "../protocols/LayerShell.hpp" #include "../protocols/PresentationTime.hpp" +#include "../managers/PointerManager.hpp" #include <hyprutils/string/String.hpp> using namespace Hyprutils::String; @@ -248,6 +249,9 @@ void CMonitor::onDisconnect(bool destroy) { // remove mirror if (pMirrorOf) { pMirrorOf->mirrors.erase(std::find_if(pMirrorOf->mirrors.begin(), pMirrorOf->mirrors.end(), [&](const auto& other) { return other == this; })); + + // unlock software for mirrored monitor + g_pPointerManager->unlockSoftwareForMonitor(pMirrorOf); pMirrorOf = nullptr; } @@ -471,6 +475,9 @@ void CMonitor::setMirror(const std::string& mirrorOf) { if (pMirrorOf) { pMirrorOf->mirrors.erase(std::find_if(pMirrorOf->mirrors.begin(), pMirrorOf->mirrors.end(), [&](const auto& other) { return other == this; })); + + // unlock software for mirrored monitor + g_pPointerManager->unlockSoftwareForMonitor(pMirrorOf); } pMirrorOf = nullptr; @@ -540,6 +547,9 @@ void CMonitor::setMirror(const std::string& mirrorOf) { g_pCompositor->setActiveMonitor(g_pCompositor->m_vMonitors.front().get()); g_pCompositor->sanityCheckWorkspaces(); + + // Software lock mirrored monitor + g_pPointerManager->lockSoftwareForMonitor(PMIRRORMON); } events.modeChanged.emit(); |
