summaryrefslogtreecommitdiff
path: root/Servers/WindowServer/WSWindowSwitcher.cpp
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-12-27 11:34:40 +0100
committerAndreas Kling <awesomekling@gmail.com>2019-12-27 11:34:40 +0100
commitc7847d7c81af5adc1a0b9a25e6c381caa06e5810 (patch)
treef857e22335ed7e1ac3d76dbb544b7cb74fb84b83 /Servers/WindowServer/WSWindowSwitcher.cpp
parent5d1acdda829422b347be502d2e68fd52266d4ef4 (diff)
downloadserenity-c7847d7c81af5adc1a0b9a25e6c381caa06e5810.zip
WindowServer+LibGUI: Mark window bitmaps volatile in occluded windows
WindowServer now tracks whether windows are occluded (meaning that they are completely covered by one or more opaque windows sitting above them.) This state is communicated to the windows via WindowStateChanged messages, which then allow GWindow to mark its backing store volatile. This reduces the effective memory impact of windows that are not at all visible to the user. Very cool. :^)
Diffstat (limited to 'Servers/WindowServer/WSWindowSwitcher.cpp')
-rw-r--r--Servers/WindowServer/WSWindowSwitcher.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/Servers/WindowServer/WSWindowSwitcher.cpp b/Servers/WindowServer/WSWindowSwitcher.cpp
index f98499a43d..2c6622a90d 100644
--- a/Servers/WindowServer/WSWindowSwitcher.cpp
+++ b/Servers/WindowServer/WSWindowSwitcher.cpp
@@ -28,6 +28,7 @@ void WSWindowSwitcher::set_visible(bool visible)
if (m_visible == visible)
return;
m_visible = visible;
+ WSWindowManager::the().recompute_occlusions();
if (m_switcher_window)
m_switcher_window->set_visible(visible);
if (!m_visible)