From 58ff04fdf3124fbe739193cb1a8070c85bec166b Mon Sep 17 00:00:00 2001 From: vaxerski Date: Wed, 10 Aug 2022 21:54:09 +0200 Subject: added experimental monitor saving --- src/helpers/Monitor.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/helpers/Monitor.cpp') diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 51ff65bb..bd547a3b 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -160,6 +160,9 @@ void CMonitor::onConnect(bool noRule) { wlr_xcursor_manager_load(g_pCompositor->m_sWLRXCursorMgr, scale); + g_pHyprRenderer->arrangeLayersForMonitor(ID); + g_pLayoutManager->getCurrentLayout()->recalculateMonitor(ID); + g_pEventManager->postEvent(SHyprIPCEvent{"monitoradded", szName}); } @@ -177,16 +180,21 @@ void CMonitor::onDisconnect() { } } - if (!BACKUPMON) { - Debug::log(CRIT, "No monitors! Unplugged last! Exiting."); - g_pCompositor->cleanup(); - return; - } - m_bEnabled = false; hyprListener_monitorFrame.removeCallback(); + if (!BACKUPMON) { + Debug::log(WARN, "Unplugged last monitor, entering an unsafe state. Good luck my friend."); + + hyprListener_monitorMode.removeCallback(); + hyprListener_monitorDestroy.removeCallback(); + + g_pCompositor->m_bUnsafeState = true; + + return; + } + const auto BACKUPWORKSPACE = BACKUPMON->activeWorkspace > 0 ? std::to_string(BACKUPMON->activeWorkspace) : "name:" + g_pCompositor->getWorkspaceByID(BACKUPMON->activeWorkspace)->m_szName; // snap cursor @@ -215,10 +223,6 @@ void CMonitor::onDisconnect() { wlr_output_commit(output); - for (auto& lsl : m_aLayerSurfaceLists) { - lsl.clear(); - } - g_pCompositor->m_vWorkspaces.erase(std::remove_if(g_pCompositor->m_vWorkspaces.begin(), g_pCompositor->m_vWorkspaces.end(), [&](std::unique_ptr& el) { return el->m_iMonitorID == ID; })); Debug::log(LOG, "Removed monitor %s!", szName.c_str()); -- cgit v1.2.3