From 6198dc0e1761f334e672e75651166b1accedba98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 3 Nov 2008 19:31:26 +0000 Subject: [PATCH] To allow testing the ViewHWInterface (used in the test environment) with both double buffering and single buffering, Invalidate() needs to be virtual and ViewHWInterface needs to decide where to invalidate it's host window. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28480 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/drawing/HWInterface.h | 2 +- src/servers/app/drawing/ViewHWInterface.cpp | 11 +++++++++++ src/servers/app/drawing/ViewHWInterface.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/servers/app/drawing/HWInterface.h b/src/servers/app/drawing/HWInterface.h index 1e8589c676..f818ac55bf 100644 --- a/src/servers/app/drawing/HWInterface.h +++ b/src/servers/app/drawing/HWInterface.h @@ -143,7 +143,7 @@ class HWInterface : protected MultiLocker { virtual bool IsDoubleBuffered() const; // Invalidate is used for scheduling an area for updating - status_t Invalidate(const BRect& frame); + virtual status_t Invalidate(const BRect& frame); // while as CopyBackToFront() actually performs the operation // either directly or asynchronously by the UpdateQueue thread virtual status_t CopyBackToFront(const BRect& frame); diff --git a/src/servers/app/drawing/ViewHWInterface.cpp b/src/servers/app/drawing/ViewHWInterface.cpp index ad2c139be3..e79bba24a2 100644 --- a/src/servers/app/drawing/ViewHWInterface.cpp +++ b/src/servers/app/drawing/ViewHWInterface.cpp @@ -758,6 +758,17 @@ ViewHWInterface::IsDoubleBuffered() const return HWInterface::IsDoubleBuffered(); } +// Invalidate +status_t +ViewHWInterface::Invalidate(const BRect& frame) +{ + status_t ret = HWInterface::Invalidate(frame); + + if (ret >= B_OK && fWindow && !IsDoubleBuffered()) + fWindow->Invalidate(frame); + return ret; +} + // CopyBackToFront status_t ViewHWInterface::CopyBackToFront(const BRect& frame) diff --git a/src/servers/app/drawing/ViewHWInterface.h b/src/servers/app/drawing/ViewHWInterface.h index a35cff3b1c..7342ee40be 100644 --- a/src/servers/app/drawing/ViewHWInterface.h +++ b/src/servers/app/drawing/ViewHWInterface.h @@ -53,6 +53,7 @@ class ViewHWInterface : public HWInterface { virtual RenderingBuffer* BackBuffer() const; virtual bool IsDoubleBuffered() const; + virtual status_t Invalidate(const BRect& frame); virtual status_t CopyBackToFront(const BRect& frame); private: