From 3780361b950548612e42a58952f9f7cb82c306f7 Mon Sep 17 00:00:00 2001 From: tomahk Date: Mon, 19 Sep 2022 20:42:59 +0200 Subject: [PATCH 1/3] fix hyprland freeze when undocking from docking station --- src/events/Monitors.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index 211562b0..6484f4d1 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -286,7 +286,8 @@ void Events::listener_monitorFrame(void* owner, void* data) { pixman_region32_fini(&frameDamage); pixman_region32_fini(&damage); - wlr_output_commit(PMONITOR->output); + if (!wlr_output_commit(PMONITOR->output)) + return; if (*PDAMAGEBLINK || *PNOVFR) g_pCompositor->scheduleFrameForMonitor(PMONITOR); From 73e19aee6fc9d9754dfcf59f16480172f080f639 Mon Sep 17 00:00:00 2001 From: tomahk Date: Mon, 19 Sep 2022 20:44:33 +0200 Subject: [PATCH 2/3] prevent assert killing Hyprland after reenabling monitor --- src/helpers/Monitor.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 509f292d..c3d56dfc 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -65,6 +65,8 @@ void CMonitor::onConnect(bool noRule) { } if (!m_bRenderingInitPassed) { + output->allocator = NULL; + output->renderer = NULL; wlr_output_init_render(output, g_pCompositor->m_sWLRAllocator, g_pCompositor->m_sWLRRenderer); m_bRenderingInitPassed = true; } @@ -356,4 +358,4 @@ void CMonitor::setMirror(const std::string& mirrorOf) { g_pCompositor->m_pLastMonitor = g_pCompositor->m_vMonitors.front().get(); } -} \ No newline at end of file +} From 51461655990da1c6b5c932e235bf664f4797b7cf Mon Sep 17 00:00:00 2001 From: tomahk Date: Mon, 19 Sep 2022 21:45:00 +0200 Subject: [PATCH 3/3] this is c++, use nullptr --- src/helpers/Monitor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index c3d56dfc..ab04bcbe 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -65,8 +65,8 @@ void CMonitor::onConnect(bool noRule) { } if (!m_bRenderingInitPassed) { - output->allocator = NULL; - output->renderer = NULL; + output->allocator = nullptr; + output->renderer = nullptr; wlr_output_init_render(output, g_pCompositor->m_sWLRAllocator, g_pCompositor->m_sWLRRenderer); m_bRenderingInitPassed = true; }