diff --git a/WindowServer/WSWindowManager.cpp b/WindowServer/WSWindowManager.cpp index 3f069d0cea..418e2d46d7 100644 --- a/WindowServer/WSWindowManager.cpp +++ b/WindowServer/WSWindowManager.cpp @@ -336,7 +336,8 @@ void WSWindowManager::compose() } for (auto* window = m_windows_in_order.head(); window; window = window->next()) { WSWindowLocker locker(*window); - if (!window->backing()) + RetainPtr backing = window->backing(); + if (!backing) continue; if (!any_dirty_rect_intersects_window(*window)) continue; @@ -350,7 +351,7 @@ void WSWindowManager::compose() dirty_rect_in_window_coordinates.set_y(dirty_rect_in_window_coordinates.y() - window->y()); auto dst = window->position(); dst.move_by(dirty_rect_in_window_coordinates.location()); - m_back_painter->blit(dst, *window->backing(), dirty_rect_in_window_coordinates); + m_back_painter->blit(dst, *backing, dirty_rect_in_window_coordinates); m_back_painter->clear_clip_rect(); } m_back_painter->clear_clip_rect();