summaryrefslogtreecommitdiff
path: root/src/events/Monitors.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-05-05 22:18:10 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2024-05-09 13:37:39 +0100
commited411f53bdcf8d455f9e6ca769693aa84dc8372f (patch)
treeaacedb349acdd1022975d7b622dc7cfe11388223 /src/events/Monitors.cpp
parente4e84064f2d07810e0c150bce1369a0a00503e9a (diff)
cursor: move to a hyprland impl
This moves wlr_cursor to a completely new impl mostly under CPointerManager Also adds beginSimple to OpenGL for simple render passes (e.g. cursor)
Diffstat (limited to 'src/events/Monitors.cpp')
-rw-r--r--src/events/Monitors.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp
index 982dc941..ab8fc7b0 100644
--- a/src/events/Monitors.cpp
+++ b/src/events/Monitors.cpp
@@ -16,8 +16,7 @@
// //
// --------------------------------------------------------- //
-static void checkDefaultCursorWarp(SP<CMonitor>* PNEWMONITORWRAP, std::string monitorName) {
- const auto PNEWMONITOR = PNEWMONITORWRAP->get();
+static void checkDefaultCursorWarp(SP<CMonitor> PNEWMONITOR, std::string monitorName) {
static auto PCURSORMONITOR = CConfigValue<std::string>("general:default_cursor_monitor");
static auto firstMonitorAdded = std::chrono::system_clock::now();
@@ -61,18 +60,18 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
}
// add it to real
- SP<CMonitor>* PNEWMONITORWRAP = nullptr;
-
- PNEWMONITORWRAP = &g_pCompositor->m_vRealMonitors.emplace_back(makeShared<CMonitor>());
+ auto PNEWMONITOR = g_pCompositor->m_vRealMonitors.emplace_back(makeShared<CMonitor>());
if (std::string("HEADLESS-1") == OUTPUT->name)
- g_pCompositor->m_pUnsafeOutput = PNEWMONITORWRAP->get();
+ g_pCompositor->m_pUnsafeOutput = PNEWMONITOR.get();
- (*PNEWMONITORWRAP)->output = OUTPUT;
+ PNEWMONITOR->output = OUTPUT;
+ PNEWMONITOR->self = PNEWMONITOR;
const bool FALLBACK = g_pCompositor->m_pUnsafeOutput ? OUTPUT == g_pCompositor->m_pUnsafeOutput->output : false;
- (*PNEWMONITORWRAP)->ID = FALLBACK ? -1 : g_pCompositor->getNextAvailableMonitorID(OUTPUT->name);
- const auto PNEWMONITOR = PNEWMONITORWRAP->get();
+ PNEWMONITOR->ID = FALLBACK ? -1 : g_pCompositor->getNextAvailableMonitorID(OUTPUT->name);
PNEWMONITOR->isUnsafeFallback = FALLBACK;
+ EMIT_HOOK_EVENT("newMonitor", PNEWMONITOR);
+
if (!FALLBACK)
PNEWMONITOR->onConnect(false);
@@ -82,14 +81,14 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
// ready to process if we have a real monitor
if ((!g_pHyprRenderer->m_pMostHzMonitor || PNEWMONITOR->refreshRate > g_pHyprRenderer->m_pMostHzMonitor->refreshRate) && PNEWMONITOR->m_bEnabled)
- g_pHyprRenderer->m_pMostHzMonitor = PNEWMONITOR;
+ g_pHyprRenderer->m_pMostHzMonitor = PNEWMONITOR.get();
g_pCompositor->m_bReadyToProcess = true;
g_pConfigManager->m_bWantsMonitorReload = true;
- g_pCompositor->scheduleFrameForMonitor(PNEWMONITOR);
+ g_pCompositor->scheduleFrameForMonitor(PNEWMONITOR.get());
- checkDefaultCursorWarp(PNEWMONITORWRAP, OUTPUT->name);
+ checkDefaultCursorWarp(PNEWMONITOR, OUTPUT->name);
for (auto& w : g_pCompositor->m_vWindows) {
if (w->m_iMonitorID == PNEWMONITOR->ID) {