From 2e654b53fa40adea19e24c582e57e33a09d0976a Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 11 Apr 2026 08:30:15 +0300 Subject: [PATCH] WindowServer: Use rectangular framebuffer syncs --- userspace/programs/WindowServer/WindowServer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/userspace/programs/WindowServer/WindowServer.cpp b/userspace/programs/WindowServer/WindowServer.cpp index 88a97b60..2c67d6c0 100644 --- a/userspace/programs/WindowServer/WindowServer.cpp +++ b/userspace/programs/WindowServer/WindowServer.cpp @@ -9,9 +9,9 @@ #include #include +#include #include #include - #include #include @@ -1599,9 +1599,13 @@ void WindowServer::sync() for (size_t i = 0; i < m_damaged_area_count; i++) { - const auto area = m_damaged_areas[i]; - for (int32_t y = area.min_y; y < area.max_y; y++) - msync(&m_framebuffer.mmap[y * m_framebuffer.width + area.min_x], area.width() * sizeof(uint32_t), MS_SYNC); + const fb_msync_region region { + .min_x = static_cast(m_damaged_areas[i].min_x), + .min_y = static_cast(m_damaged_areas[i].min_y), + .max_x = static_cast(m_damaged_areas[i].max_x), + .max_y = static_cast(m_damaged_areas[i].max_y), + }; + ioctl(m_framebuffer.fd, FB_MSYNC_RECTANGLE, ®ion); } m_damaged_area_count = 0;