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: