diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-31 17:17:44 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-31 17:17:44 +0200 |
| commit | e73df80782593f0cab39a5f3e7a5a005203c9b0c (patch) | |
| tree | f8a820c102590b2fcda837089655cae26b191e0b /src | |
| parent | 0d7131d30efba3b8d279ddaada6651b11751226b (diff) | |
Add mon in mon out events and fix crash
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compositor.cpp | 5 | ||||
| -rw-r--r-- | src/events/Monitors.cpp | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 4dfb5297..f7f1d68f 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1053,8 +1053,9 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, SMonitor* pMoni if (SWITCHINGISACTIVE) { // if it was active, preserve its' status. If it wasn't, don't. Debug::log(LOG, "moveWorkspaceToMonitor: SWITCHINGISACTIVE, active %d -> %d", pMonitor->activeWorkspace, pWorkspace->m_iID); - - getWorkspaceByID(pMonitor->activeWorkspace)->startAnim(false, false); + + if (const auto PWORKSPACE = getWorkspaceByID(pMonitor->activeWorkspace); PWORKSPACE) + getWorkspaceByID(pMonitor->activeWorkspace)->startAnim(false, false); pMonitor->activeWorkspace = pWorkspace->m_iID; g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->ID); diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index 43e861d0..e3b0b190 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -141,7 +141,9 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { // if (!g_pCompositor->m_pLastMonitor) // set the last monitor if it isnt set yet - g_pCompositor->m_pLastMonitor = PNEWMONITOR; + g_pCompositor->m_pLastMonitor = PNEWMONITOR; + + g_pEventManager->postEvent(SHyprIPCEvent("monitoradded", PNEWMONITOR->szName)); // ready to process cuz we have a monitor g_pCompositor->m_bReadyToProcess = true; @@ -341,6 +343,8 @@ void Events::listener_monitorDestroy(void* owner, void* data) { Debug::log(LOG, "Removed monitor %s!", pMonitor->szName.c_str()); + g_pEventManager->postEvent(SHyprIPCEvent("monitorremoved", pMonitor->szName)); + g_pCompositor->m_lMonitors.remove(*pMonitor); // update the pMostHzMonitor |
