https://invent.kde.org/plasma/kwin/-/merge_requests/7496 From 6d096dc5ad2e4a5fac6fb65552107473c0e55a6f Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Fri, 11 Apr 2025 12:30:12 +0000 Subject: [PATCH] Fix a crash in RenderLoop::scheduleRepaint When kwin shuts down, the output layers may attempt to schedule a repaint after the workspace has been destroyed. SENTRY: KWIN-AYY (cherry picked from commit 534582e089d1dbed9a1e3d18031ac90cc364c570) Co-authored-by: Vlad Zahorodnii --- src/core/renderloop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/renderloop.cpp b/src/core/renderloop.cpp index f2ef3ea213b..d997e2bf737 100644 --- a/src/core/renderloop.cpp +++ b/src/core/renderloop.cpp @@ -263,7 +263,7 @@ void RenderLoop::scheduleRepaint(Item *item, RenderLayer *layer, OutputLayer *ou } const bool vrr = d->presentationMode == PresentationMode::AdaptiveSync || d->presentationMode == PresentationMode::AdaptiveAsync; const bool tearing = d->presentationMode == PresentationMode::Async || d->presentationMode == PresentationMode::AdaptiveAsync; - if ((vrr || tearing) && workspace()->activeWindow() && d->output) { + if ((vrr || tearing) && workspace() && workspace()->activeWindow() && d->output) { Window *const activeWindow = workspace()->activeWindow(); if ((item || layer || outputLayer) && activeWindowControlsVrrRefreshRate() && item != activeWindow->surfaceItem()) { d->delayedVrrTimer.start(); -- GitLab