From 0ac013e66f75c5733fcd6bca47300d126b293279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 23 Apr 2006 15:45:35 +0000 Subject: [PATCH] * Some refactoring: renamed OverlayCookie to Overlay and put it in its own source file. * An overlay is now also hidden in case its is removed from the window. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17209 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/BitmapManager.cpp | 11 +- src/servers/app/ServerBitmap.cpp | 141 ++---------------- src/servers/app/ServerBitmap.h | 61 +------- src/servers/app/ServerWindow.cpp | 41 +++-- src/servers/app/ServerWindow.h | 1 + src/servers/app/ViewLayer.cpp | 22 ++- src/servers/app/ViewLayer.h | 4 +- .../app/drawing/AccelerantHWInterface.cpp | 37 ++--- .../app/drawing/AccelerantHWInterface.h | 6 +- src/servers/app/drawing/HWInterface.cpp | 6 +- src/servers/app/drawing/HWInterface.h | 8 +- src/servers/app/drawing/Jamfile | 1 + src/servers/app/drawing/Overlay.cpp | 125 ++++++++++++++++ src/servers/app/drawing/Overlay.h | 72 +++++++++ src/tests/servers/app/Jamfile | 1 + 15 files changed, 286 insertions(+), 251 deletions(-) create mode 100644 src/servers/app/drawing/Overlay.cpp create mode 100644 src/servers/app/drawing/Overlay.h diff --git a/src/servers/app/BitmapManager.cpp b/src/servers/app/BitmapManager.cpp index df2cadf93a..d7a357a623 100644 --- a/src/servers/app/BitmapManager.cpp +++ b/src/servers/app/BitmapManager.cpp @@ -18,6 +18,7 @@ #include "ClientMemoryAllocator.h" #include "HWInterface.h" +#include "Overlay.h" #include "ServerBitmap.h" #include "ServerProtocol.h" #include "ServerTokenSpace.h" @@ -111,13 +112,13 @@ BitmapManager::CreateBitmap(ClientMemoryAllocator* allocator, HWInterface& hwInt uint8* buffer = NULL; if (flags & B_BITMAP_WILL_OVERLAY) { - OverlayCookie* overlayCookie = new (std::nothrow) OverlayCookie(hwInterface); + Overlay* overlay = new (std::nothrow) Overlay(hwInterface); const overlay_buffer* overlayBuffer = NULL; overlay_client_data* clientData = NULL; bool newArea = false; - if (overlayCookie != NULL && overlayCookie->InitCheck() == B_OK) { + if (overlay != NULL && overlay->InitCheck() == B_OK) { // allocate client memory to communicate the overlay semaphore // and buffer location to the BBitmap cookie = allocator->Allocate(sizeof(overlay_client_data), @@ -129,11 +130,11 @@ BitmapManager::CreateBitmap(ClientMemoryAllocator* allocator, HWInterface& hwInt } if (overlayBuffer != NULL) { - overlayCookie->SetOverlayData(overlayBuffer, overlayToken, clientData); + overlay->SetOverlayData(overlayBuffer, overlayToken, clientData); bitmap->fAllocator = allocator; bitmap->fAllocationCookie = cookie; - bitmap->SetOverlayCookie(overlayCookie); + bitmap->SetOverlay(overlay); bitmap->fBytesPerRow = overlayBuffer->bytes_per_row; buffer = (uint8*)overlayBuffer->buffer; @@ -141,7 +142,7 @@ BitmapManager::CreateBitmap(ClientMemoryAllocator* allocator, HWInterface& hwInt *_allocationFlags = kFramebuffer | (newArea ? kNewAllocatorArea : 0); } else { hwInterface.ReleaseOverlayChannel(overlayToken); - delete overlayCookie; + delete overlay; allocator->Free(cookie); } } else if (allocator != NULL) { diff --git a/src/servers/app/ServerBitmap.cpp b/src/servers/app/ServerBitmap.cpp index 13d154a0d1..cc75c9a188 100644 --- a/src/servers/app/ServerBitmap.cpp +++ b/src/servers/app/ServerBitmap.cpp @@ -12,8 +12,7 @@ #include "ClientMemoryAllocator.h" #include "ColorConversion.h" #include "HWInterface.h" - -#include +#include "Overlay.h" #include #include @@ -56,7 +55,7 @@ ServerBitmap::ServerBitmap(BRect rect, color_space space, : fAllocator(NULL), fAllocationCookie(NULL), - fOverlayCookie(NULL), + fOverlay(NULL), fBuffer(NULL), fReferenceCount(1), // WARNING: '1' is added to the width and height. @@ -80,7 +79,7 @@ ServerBitmap::ServerBitmap(const ServerBitmap* bmp) : fAllocator(NULL), fAllocationCookie(NULL), - fOverlayCookie(NULL), + fOverlay(NULL), fBuffer(NULL), fReferenceCount(1) { @@ -109,8 +108,8 @@ ServerBitmap::~ServerBitmap() else free(fBuffer); - delete fOverlayCookie; - // deleting the cookie will also free the overlay buffer + delete fOverlay; + // deleting the overlay will also free the overlay buffer } @@ -305,16 +304,16 @@ ServerBitmap::AreaOffset() const void -ServerBitmap::SetOverlayCookie(::OverlayCookie* cookie) +ServerBitmap::SetOverlay(::Overlay* cookie) { - fOverlayCookie = cookie; + fOverlay = cookie; } -::OverlayCookie* -ServerBitmap::OverlayCookie() const +::Overlay* +ServerBitmap::Overlay() const { - return fOverlayCookie; + return fOverlay; } @@ -362,123 +361,3 @@ UtilityBitmap::UtilityBitmap(const uint8* alreadyPaddedData, UtilityBitmap::~UtilityBitmap() { } - - -// #pragma mark - - - -OverlayCookie::OverlayCookie(HWInterface& interface) - : - fHWInterface(interface), - fOverlayBuffer(NULL), - fClientData(NULL), - fOverlayToken(NULL) -{ - fSemaphore = create_sem(1, "overlay lock"); - fColor.SetColor(21, 16, 21, 16); - // TODO: whatever fine color we want to use here... -} - - -OverlayCookie::~OverlayCookie() -{ - fHWInterface.ReleaseOverlayChannel(fOverlayToken); - fHWInterface.FreeOverlayBuffer(fOverlayBuffer); - - delete_sem(fSemaphore); -} - - -status_t -OverlayCookie::InitCheck() const -{ - return fSemaphore >= B_OK ? B_OK : fSemaphore; -} - - -void -OverlayCookie::SetOverlayData(const overlay_buffer* overlayBuffer, - overlay_token token, overlay_client_data* clientData) -{ - fOverlayBuffer = overlayBuffer; - fOverlayToken = token; - - fClientData = clientData; - fClientData->lock = fSemaphore; - fClientData->buffer = (uint8*)fOverlayBuffer->buffer; -} - - -void -OverlayCookie::TakeOverToken(OverlayCookie* other) -{ - overlay_token token = other->OverlayToken(); - if (token == NULL) - return; - - fOverlayToken = token; - //other->fOverlayToken = NULL; -} - - -const overlay_buffer* -OverlayCookie::OverlayBuffer() const -{ - return fOverlayBuffer; -} - - -overlay_client_data* -OverlayCookie::ClientData() const -{ - return fClientData; -} - - -overlay_token -OverlayCookie::OverlayToken() const -{ - return fOverlayToken; -} - - -void -OverlayCookie::Show() -{ - // TODO: acquire token! - if (fOverlayToken == NULL) { - printf("%p: no overlay token\n", this); - return; - } - - fHWInterface.ShowOverlay(this); -} - - -void -OverlayCookie::Hide() -{ - // TODO: acquire token! - if (fOverlayToken == NULL) { - printf("%p: no overlay token\n", this); - return; - } - - fHWInterface.HideOverlay(this); -} - - -void -OverlayCookie::SetView(const BRect& source, const BRect& destination) -{ - fSource = source; - fDestination = destination; - - if (fOverlayToken == NULL) { - printf("%p: no overlay token\n", this); - return; - } - - fHWInterface.UpdateOverlay(this); -} - diff --git a/src/servers/app/ServerBitmap.h b/src/servers/app/ServerBitmap.h index 25ba165923..4df7cba67f 100644 --- a/src/servers/app/ServerBitmap.h +++ b/src/servers/app/ServerBitmap.h @@ -16,14 +16,11 @@ #include #include -#include - - class BitmapManager; class ClientMemoryAllocator; class HWInterface; -class OverlayCookie; -struct overlay_client_data; +class Overlay; + /*! \class ServerBitmap ServerBitmap.h @@ -69,8 +66,8 @@ class ServerBitmap { area_id Area() const; uint32 AreaOffset() const; - void SetOverlayCookie(::OverlayCookie* cookie); - ::OverlayCookie* OverlayCookie() const; + void SetOverlay(::Overlay* cookie); + ::Overlay* Overlay() const; //! Does a shallow copy of the bitmap passed to it inline void ShallowCopy(const ServerBitmap *from); @@ -109,7 +106,7 @@ protected: ClientMemoryAllocator* fAllocator; void* fAllocationCookie; - ::OverlayCookie* fOverlayCookie; + ::Overlay* fOverlay; uint8* fBuffer; int32 fReferenceCount; @@ -140,54 +137,6 @@ class UtilityBitmap : public ServerBitmap { virtual ~UtilityBitmap(); }; -//! An allocation cookie for overlays -class OverlayCookie { - public: - OverlayCookie(HWInterface& interface); - ~OverlayCookie(); - - status_t InitCheck() const; - - void SetOverlayData(const overlay_buffer* overlayBuffer, - overlay_token token, overlay_client_data* clientData); - void TakeOverToken(OverlayCookie* other); - - const overlay_buffer* OverlayBuffer() const; - overlay_client_data* ClientData() const; - overlay_token OverlayToken() const; - - sem_id Semaphore() const - { return fSemaphore; } - - const RGBColor& Color() const - { return fColor; } - - void SetVisible(bool visible) - { fVisible = visible; } - bool IsVisible() const - { return fVisible; } - - void SetView(const BRect& source, const BRect& destination); - const BRect& Source() const - { return fSource; } - const BRect& Destination() const - { return fDestination; } - - void Show(); - void Hide(); - - private: - HWInterface& fHWInterface; - const overlay_buffer* fOverlayBuffer; - overlay_client_data* fClientData; - overlay_token fOverlayToken; - sem_id fSemaphore; - RGBColor fColor; - BRect fSource; - BRect fDestination; - bool fVisible; -}; - // ShallowCopy (only for server bitmaps) void ServerBitmap::ShallowCopy(const ServerBitmap* from) diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 768070d4cb..c3ec849f6a 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -20,30 +20,15 @@ mouse and key events from the server to its window, and other such things. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include +#include "ServerWindow.h" #include "AppServer.h" #include "DebugInfoManager.h" #include "Desktop.h" #include "DrawingEngine.h" #include "HWInterface.h" +#include "Overlay.h" #include "RAMLinkMsgReader.h" #include "RenderingBuffer.h" #include "ServerApp.h" @@ -53,10 +38,24 @@ #include "WindowLayer.h" #include "WorkspacesLayer.h" -#include "ServerWindow.h" - #include "clipping.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + using std::nothrow; //#define TRACE_SERVER_WINDOW @@ -1514,8 +1513,8 @@ ServerWindow::_DispatchViewMessage(int32 code, BRegion dirty(fCurrentLayer->Bounds()); fWindowLayer->InvalidateView(fCurrentLayer, dirty); - if (bitmap != NULL && bitmap->OverlayCookie() != NULL) - colorKey = bitmap->OverlayCookie()->Color().GetColor32(); + if (bitmap != NULL && bitmap->Overlay() != NULL) + colorKey = bitmap->Overlay()->Color().GetColor32(); } else status = B_BAD_VALUE; } diff --git a/src/servers/app/ServerWindow.h b/src/servers/app/ServerWindow.h index dafebca033..9c1c79f875 100644 --- a/src/servers/app/ServerWindow.h +++ b/src/servers/app/ServerWindow.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include diff --git a/src/servers/app/ViewLayer.cpp b/src/servers/app/ViewLayer.cpp index a6d73717ca..e3a2e981e4 100644 --- a/src/servers/app/ViewLayer.cpp +++ b/src/servers/app/ViewLayer.cpp @@ -15,6 +15,7 @@ #include "BitmapManager.h" #include "Desktop.h" #include "DrawingEngine.h" +#include "Overlay.h" #include "ServerApp.h" #include "ServerBitmap.h" #include "ServerCursor.h" @@ -272,8 +273,13 @@ ViewLayer::RemoveChild(ViewLayer* layer) layer->fPreviousSibling = NULL; layer->fNextSibling = NULL; - if (layer->IsVisible()) + if (layer->IsVisible()) { + Overlay* overlay = _Overlay(); + if (overlay != NULL) + overlay->Hide(); + RebuildClipping(false); + } if (fWindow) { layer->DetachedFromWindow(); @@ -452,8 +458,8 @@ ViewLayer::SetViewBitmap(ServerBitmap* bitmap, BRect sourceRect, if (fViewBitmap != NULL) { if (bitmap != NULL) { // take over overlay token from current overlay (if it has any) - OverlayCookie* oldOverlay = _Overlay(); - OverlayCookie* newOverlay = bitmap->OverlayCookie(); + Overlay* oldOverlay = _Overlay(); + Overlay* newOverlay = bitmap->Overlay(); if (oldOverlay != NULL && newOverlay != NULL) newOverlay->TakeOverToken(oldOverlay); @@ -483,20 +489,20 @@ ViewLayer::SetViewBitmap(ServerBitmap* bitmap, BRect sourceRect, } -OverlayCookie* +::Overlay* ViewLayer::_Overlay() const { if (fViewBitmap == NULL) return NULL; - return fViewBitmap->OverlayCookie(); + return fViewBitmap->Overlay(); } void ViewLayer::_UpdateOverlayView() const { - OverlayCookie* overlay = _Overlay(); + Overlay* overlay = _Overlay(); if (overlay == NULL) return; @@ -1032,7 +1038,7 @@ ViewLayer::Draw(DrawingEngine* drawingEngine, BRegion* effectiveClipping, // add the current clipping redraw->IntersectWith(effectiveClipping); - OverlayCookie* overlayCookie = _Overlay(); + Overlay* overlayCookie = _Overlay(); if (fViewBitmap != NULL && overlayCookie == NULL) { // draw view bitmap @@ -1214,7 +1220,7 @@ ViewLayer::UpdateVisibleDeep(bool parentVisible) // overlay handling - OverlayCookie* overlay = _Overlay(); + Overlay* overlay = _Overlay(); if (overlay == NULL) return; diff --git a/src/servers/app/ViewLayer.h b/src/servers/app/ViewLayer.h index 2daf63812c..e17f194d26 100644 --- a/src/servers/app/ViewLayer.h +++ b/src/servers/app/ViewLayer.h @@ -26,7 +26,7 @@ namespace BPrivate { class DrawState; class DrawingEngine; -class OverlayCookie; +class Overlay; class WindowLayer; class ServerBitmap; class ServerCursor; @@ -209,7 +209,7 @@ class ViewLayer { protected: void _MoveScreenClipping(int32 x, int32 y, bool deep); - OverlayCookie* _Overlay() const; + Overlay* _Overlay() const; void _UpdateOverlayView() const; BString fName; diff --git a/src/servers/app/drawing/AccelerantHWInterface.cpp b/src/servers/app/drawing/AccelerantHWInterface.cpp index 9adcf9b1d7..8fbab26e37 100644 --- a/src/servers/app/drawing/AccelerantHWInterface.cpp +++ b/src/servers/app/drawing/AccelerantHWInterface.cpp @@ -10,28 +10,29 @@ /** Accelerant based HWInterface implementation */ -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include +#include "AccelerantHWInterface.h" +#include "AccelerantBuffer.h" +#include "MallocBuffer.h" +#include "Overlay.h" #include "RGBColor.h" #include "ServerConfig.h" #include "ServerCursor.h" #include "ServerProtocol.h" -#include "AccelerantHWInterface.h" -#include "AccelerantBuffer.h" -#include "MallocBuffer.h" +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include using std::nothrow; @@ -762,21 +763,21 @@ AccelerantHWInterface::FreeOverlayBuffer(const overlay_buffer* buffer) void -AccelerantHWInterface::ShowOverlay(OverlayCookie* overlay) +AccelerantHWInterface::ShowOverlay(Overlay* overlay) { UpdateOverlay(overlay); } void -AccelerantHWInterface::HideOverlay(OverlayCookie* overlay) +AccelerantHWInterface::HideOverlay(Overlay* overlay) { fAccConfigureOverlay(overlay->OverlayToken(), overlay->OverlayBuffer(), NULL, NULL); } void -AccelerantHWInterface::UpdateOverlay(OverlayCookie* overlay) +AccelerantHWInterface::UpdateOverlay(Overlay* overlay) { const overlay_buffer* buffer = overlay->OverlayBuffer(); diff --git a/src/servers/app/drawing/AccelerantHWInterface.h b/src/servers/app/drawing/AccelerantHWInterface.h index 315e6d287a..ef9c917437 100644 --- a/src/servers/app/drawing/AccelerantHWInterface.h +++ b/src/servers/app/drawing/AccelerantHWInterface.h @@ -65,9 +65,9 @@ public: color_space space); virtual void FreeOverlayBuffer(const overlay_buffer* buffer); - virtual void ShowOverlay(OverlayCookie* overlay); - virtual void HideOverlay(OverlayCookie* overlay); - virtual void UpdateOverlay(OverlayCookie* overlay); + virtual void ShowOverlay(Overlay* overlay); + virtual void HideOverlay(Overlay* overlay); + virtual void UpdateOverlay(Overlay* overlay); // accelerated drawing virtual void CopyRegion(const clipping_rect* sortedRectList, diff --git a/src/servers/app/drawing/HWInterface.cpp b/src/servers/app/drawing/HWInterface.cpp index 1dd4593078..f1c5fd8b13 100644 --- a/src/servers/app/drawing/HWInterface.cpp +++ b/src/servers/app/drawing/HWInterface.cpp @@ -336,19 +336,19 @@ HWInterface::FreeOverlayBuffer(const overlay_buffer* buffer) void -HWInterface::ShowOverlay(OverlayCookie* overlay) +HWInterface::ShowOverlay(Overlay* overlay) { } void -HWInterface::HideOverlay(OverlayCookie* overlay) +HWInterface::HideOverlay(Overlay* overlay) { } void -HWInterface::UpdateOverlay(OverlayCookie* overlay) +HWInterface::UpdateOverlay(Overlay* overlay) { } diff --git a/src/servers/app/drawing/HWInterface.h b/src/servers/app/drawing/HWInterface.h index 9dfce95328..8eb02e51aa 100644 --- a/src/servers/app/drawing/HWInterface.h +++ b/src/servers/app/drawing/HWInterface.h @@ -19,7 +19,7 @@ #include -class OverlayCookie; +class Overlay; class RenderingBuffer; class RGBColor; class ServerBitmap; @@ -107,9 +107,9 @@ class HWInterface : public MultiLocker { color_space space); virtual void FreeOverlayBuffer(const overlay_buffer* buffer); - virtual void ShowOverlay(OverlayCookie* overlay); - virtual void HideOverlay(OverlayCookie* overlay); - virtual void UpdateOverlay(OverlayCookie* overlay); + virtual void ShowOverlay(Overlay* overlay); + virtual void HideOverlay(Overlay* overlay); + virtual void UpdateOverlay(Overlay* overlay); // frame buffer access (you need to ReadLock!) RenderingBuffer* DrawingBuffer() const; diff --git a/src/servers/app/drawing/Jamfile b/src/servers/app/drawing/Jamfile index 212bffafae..d51ffa1426 100644 --- a/src/servers/app/drawing/Jamfile +++ b/src/servers/app/drawing/Jamfile @@ -18,6 +18,7 @@ StaticLibrary libasdrawing.a : MallocBuffer.cpp UpdateQueue.cpp PatternHandler.cpp + Overlay.cpp BitmapHWInterface.cpp BBitmapBuffer.cpp diff --git a/src/servers/app/drawing/Overlay.cpp b/src/servers/app/drawing/Overlay.cpp new file mode 100644 index 0000000000..907b03dfe1 --- /dev/null +++ b/src/servers/app/drawing/Overlay.cpp @@ -0,0 +1,125 @@ +/* + * Copyright 2006, Haiku, Inc. + * Distributed under the terms of the MIT License. + * + * Authors: + * Axel Dörfler, axeld@pinc-software.de + */ + + +#include "HWInterface.h" +#include "Overlay.h" + +#include + + +Overlay::Overlay(HWInterface& interface) + : + fHWInterface(interface), + fOverlayBuffer(NULL), + fClientData(NULL), + fOverlayToken(NULL) +{ + fSemaphore = create_sem(1, "overlay lock"); + fColor.SetColor(21, 16, 21, 16); + // TODO: whatever fine color we want to use here... +} + + +Overlay::~Overlay() +{ + fHWInterface.ReleaseOverlayChannel(fOverlayToken); + fHWInterface.FreeOverlayBuffer(fOverlayBuffer); + + delete_sem(fSemaphore); +} + + +status_t +Overlay::InitCheck() const +{ + return fSemaphore >= B_OK ? B_OK : fSemaphore; +} + + +void +Overlay::SetOverlayData(const overlay_buffer* overlayBuffer, + overlay_token token, overlay_client_data* clientData) +{ + fOverlayBuffer = overlayBuffer; + fOverlayToken = token; + + fClientData = clientData; + fClientData->lock = fSemaphore; + fClientData->buffer = (uint8*)fOverlayBuffer->buffer; +} + + +void +Overlay::TakeOverToken(Overlay* other) +{ + overlay_token token = other->OverlayToken(); + if (token == NULL) + return; + + fOverlayToken = token; + //other->fOverlayToken = NULL; +} + + +const overlay_buffer* +Overlay::OverlayBuffer() const +{ + return fOverlayBuffer; +} + + +overlay_client_data* +Overlay::ClientData() const +{ + return fClientData; +} + + +overlay_token +Overlay::OverlayToken() const +{ + return fOverlayToken; +} + + +void +Overlay::Show() +{ + if (fOverlayToken == NULL) { + fOverlayToken = fHWInterface.AcquireOverlayChannel(); + if (fOverlayToken == NULL) + return; + } + + fHWInterface.ShowOverlay(this); +} + + +void +Overlay::Hide() +{ + if (fOverlayToken == NULL) + return; + + fHWInterface.HideOverlay(this); +} + + +void +Overlay::SetView(const BRect& source, const BRect& destination) +{ + fSource = source; + fDestination = destination; + + if (fOverlayToken == NULL) + return; + + fHWInterface.UpdateOverlay(this); +} + diff --git a/src/servers/app/drawing/Overlay.h b/src/servers/app/drawing/Overlay.h new file mode 100644 index 0000000000..32621ea68e --- /dev/null +++ b/src/servers/app/drawing/Overlay.h @@ -0,0 +1,72 @@ +/* + * Copyright 2006, Haiku, Inc. + * Distributed under the terms of the MIT License. + * + * Authors: + * Axel Dörfler, axeld@pinc-software.de + */ +#ifndef OVERLAY_H +#define OVERLAY_H + + +#include "RGBColor.h" + +#include + +//#include +//#include +//#include + + +class HWInterface; +struct overlay_client_data; + + +class Overlay { + public: + Overlay(HWInterface& interface); + ~Overlay(); + + status_t InitCheck() const; + + void SetOverlayData(const overlay_buffer* overlayBuffer, + overlay_token token, overlay_client_data* clientData); + void TakeOverToken(Overlay* other); + + const overlay_buffer* OverlayBuffer() const; + overlay_client_data* ClientData() const; + overlay_token OverlayToken() const; + + sem_id Semaphore() const + { return fSemaphore; } + + const RGBColor& Color() const + { return fColor; } + + void SetVisible(bool visible) + { fVisible = visible; } + bool IsVisible() const + { return fVisible; } + + void SetView(const BRect& source, const BRect& destination); + const BRect& Source() const + { return fSource; } + const BRect& Destination() const + { return fDestination; } + + void Show(); + void Hide(); + + private: + HWInterface& fHWInterface; + const overlay_buffer* fOverlayBuffer; + overlay_client_data* fClientData; + overlay_token fOverlayToken; + sem_id fSemaphore; + RGBColor fColor; + BRect fSource; + BRect fDestination; + bool fVisible; +}; + +#endif // OVERLAY_H diff --git a/src/tests/servers/app/Jamfile b/src/tests/servers/app/Jamfile index 727b859f75..85304545e8 100644 --- a/src/tests/servers/app/Jamfile +++ b/src/tests/servers/app/Jamfile @@ -62,6 +62,7 @@ SharedLibrary libhaikuappserver.so : FontManager.cpp HashTable.cpp MultiLocker.cpp + Overlay.cpp RGBColor.cpp ServerBitmap.cpp ServerCursor.cpp