mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 02:37:42 +00:00
WindowSerer+LibGUI: Send multiple rects in invalidation/flush messages.
This patch moves to sending up to 32 rects at a time when coordinating the painting between WindowServer and its clients. Rects are also merged into a minimal DisjointRectSet on the server side before painting. Interactive resize looks a lot better after this change, since we can usually do all the repainting needed in one go.
This commit is contained in:
parent
ec365b82d5
commit
7efd61fcf5
10 changed files with 74 additions and 29 deletions
|
@ -271,3 +271,13 @@ void WSWindow::set_default_icon()
|
|||
m_icon = default_window_icon();
|
||||
m_icon_path = default_window_icon_path();
|
||||
}
|
||||
|
||||
void WSWindow::request_update(const Rect& rect)
|
||||
{
|
||||
if (m_pending_paint_rects.is_empty()) {
|
||||
deferred_invoke([this] (auto&) {
|
||||
client()->post_paint_message(*this);
|
||||
});
|
||||
}
|
||||
m_pending_paint_rects.add(rect);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue