From dc919352b007df84f4bbe5292022eaabefaeac00 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 4 May 2019 23:57:23 +0200 Subject: [PATCH] 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. --- Servers/WindowServer/WSClientConnection.cpp | 4 +++- Servers/WindowServer/WSWindow.cpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Servers/WindowServer/WSClientConnection.cpp b/Servers/WindowServer/WSClientConnection.cpp index 2f3514e011..5b8a8f9686 100644 --- a/Servers/WindowServer/WSClientConnection.cpp +++ b/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) diff --git a/Servers/WindowServer/WSWindow.cpp b/Servers/WindowServer/WSWindow.cpp index a89679a940..8e653f682b 100644 --- a/Servers/WindowServer/WSWindow.cpp +++ b/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); }