1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 22:28:12 +00:00

WindowServer: Retain window backing stores while blitting them.

This commit is contained in:
Andreas Kling 2019-01-25 03:07:55 +01:00
parent 8a3af99416
commit a915dd7b27

View file

@ -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<GraphicsBitmap> 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();