diff options
| author | vaxerski <vaxry@vaxry.net> | 2022-08-10 21:54:09 +0200 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2022-08-10 21:54:09 +0200 |
| commit | 58ff04fdf3124fbe739193cb1a8070c85bec166b (patch) | |
| tree | 5b5a2171025f93749a15be248e0f4652fbfc3fc8 /src/helpers/Monitor.cpp | |
| parent | 9b39a0c2e0fb3ad4500c132dc975580f90eb1c08 (diff) | |
added experimental monitor saving
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
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<CWorkspace>& el) { return el->m_iMonitorID == ID; })); Debug::log(LOG, "Removed monitor %s!", szName.c_str()); |
