From e887149f257802efdca3df231675c54c911dda9b Mon Sep 17 00:00:00 2001 From: vaxerski Date: Sat, 19 Nov 2022 13:01:32 +0000 Subject: minor fixes for mirrors & log more monitor events --- src/events/Monitors.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/events/Monitors.cpp') diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index b2b15136..be598f0f 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -66,6 +66,13 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { } } + if (PNEWMONITORWRAP && PNEWMONITORWRAP->get()->m_bEnabled) { + Debug::log(LOG, "Connected an enabled monitor???"); + g_pConfigManager->m_bWantsMonitorReload = true; + g_pCompositor->scheduleFrameForMonitor(PNEWMONITORWRAP->get()); + return; + } + if (!PNEWMONITORWRAP) { Debug::log(LOG, "Adding completely new monitor."); PNEWMONITORWRAP = &g_pCompositor->m_vRealMonitors.emplace_back(std::make_shared()); @@ -88,6 +95,9 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { g_pCompositor->m_bReadyToProcess = true; g_pCompositor->m_bUnsafeState = false; } + + g_pConfigManager->m_bWantsMonitorReload = true; + g_pCompositor->scheduleFrameForMonitor(PNEWMONITOR); } void Events::listener_monitorFrame(void* owner, void* data) { @@ -326,11 +336,14 @@ void Events::listener_monitorDestroy(void* owner, void* data) { if (!pMonitor) return; + Debug::log(LOG, "Destroy called for monitor %s", pMonitor->output->name); + pMonitor->onDisconnect(); // cleanup if not unsafe - if (!g_pCompositor->m_bUnsafeState) { + Debug::log(LOG, "Removing monitor %s from realMonitors", pMonitor->output->name); + g_pCompositor->m_vRealMonitors.erase(std::remove_if(g_pCompositor->m_vRealMonitors.begin(), g_pCompositor->m_vRealMonitors.end(), [&](std::shared_ptr& el) { return el.get() == pMonitor; })); if (pMostHzMonitor == pMonitor) { -- cgit v1.2.3