From f5643345cd75e96da1ee79df122a19fe49a6ef7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 19 May 2006 09:53:01 +0000 Subject: [PATCH] added an async version of MarkContentDirty(), which would clear the backgrounds in case an expose event had already happened earlier, however, it turned out I didn't need it yet, see next commit git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17510 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/WindowLayer.cpp | 18 ++++++++++++++++++ src/servers/app/WindowLayer.h | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/servers/app/WindowLayer.cpp b/src/servers/app/WindowLayer.cpp index 18448f7ccd..0e60db14b3 100644 --- a/src/servers/app/WindowLayer.cpp +++ b/src/servers/app/WindowLayer.cpp @@ -676,6 +676,24 @@ WindowLayer::MarkContentDirty(BRegion& regionOnScreen) } +void +WindowLayer::MarkContentDirtyAsync(BRegion& regionOnScreen) +{ + // NOTE: see comments in ProcessDirtyRegion() + if (fHidden) + return; + + regionOnScreen.IntersectWith(&VisibleContentRegion()); + + if (fDirtyRegion.CountRects() == 0) { + ServerWindow()->RequestRedraw(); + } + + fDirtyRegion.Include(®ionOnScreen); + fDirtyCause |= UPDATE_REQUEST; +} + + void WindowLayer::InvalidateView(ViewLayer* layer, BRegion& layerRegion) { diff --git a/src/servers/app/WindowLayer.h b/src/servers/app/WindowLayer.h index c9e001afea..13a25f87b2 100644 --- a/src/servers/app/WindowLayer.h +++ b/src/servers/app/WindowLayer.h @@ -99,8 +99,9 @@ class WindowLayer { // can be used from inside classes that don't // need to know about Desktop (first version uses Desktop) void MarkDirty(BRegion& regionOnScreen); - // this version does not use the Desktop + // these versions do not use the Desktop void MarkContentDirty(BRegion& regionOnScreen); + void MarkContentDirtyAsync(BRegion& regionOnScreen); // shortcut for invalidating just one view void InvalidateView(ViewLayer* view, BRegion& layerRegion);