Jelajahi Sumber

WindowServer: Don't send Paint messages to minimized windows.

There's no point in painting if it can't be seen anyway. We also make sure
to request a repaint when un-minimizing, so the window gets a chance to
repaint itself then.
Andreas Kling 6 tahun lalu
induk
melakukan
dc919352b0

+ 3 - 1
Servers/WindowServer/WSClientConnection.cpp

@@ -510,10 +510,12 @@ void WSClientConnection::handle_request(const WSAPIDestroyWindowRequest& request
 
 void WSClientConnection::post_paint_message(WSWindow& window)
 {
+    auto rect_set = window.take_pending_paint_rects();
+    if (window.is_minimized())
+        return;
     WSAPI_ServerMessage message;
     message.type = WSAPI_ServerMessage::Type::Paint;
     message.window_id = window.window_id();
-    auto rect_set = window.take_pending_paint_rects();
     auto& rects = rect_set.rects();
     message.rect_count = rects.size();
     for (int i = 0; i < min(WSAPI_ServerMessage::max_inline_rect_count, rects.size()); ++i)

+ 2 - 0
Servers/WindowServer/WSWindow.cpp

@@ -128,6 +128,8 @@ void WSWindow::set_minimized(bool minimized)
     if (m_minimized == minimized)
         return;
     m_minimized = minimized;
+    if (!minimized)
+        request_update({ { }, size() });
     invalidate();
     WSWindowManager::the().notify_minimization_state_changed(*this);
 }