vfs: check userland buffers before reading them.
[haiku.git] / src / servers / app / drawing / Overlay.h
blob5a8e1cec40c10accea69cfc2423e71c56a0d970c
1 /*
2 * Copyright 2006-2007, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
5 * Authors:
6 * Axel Dörfler, axeld@pinc-software.de
7 */
8 #ifndef OVERLAY_H
9 #define OVERLAY_H
12 #include <InterfaceDefs.h>
14 #include <video_overlay.h>
17 class HWInterface;
18 class ServerBitmap;
19 struct overlay_client_data;
22 class Overlay {
23 public:
24 Overlay(HWInterface& interface, ServerBitmap* bitmap,
25 overlay_token token);
26 ~Overlay();
28 status_t InitCheck() const;
30 status_t Suspend(ServerBitmap* bitmap, bool needTemporary);
31 status_t Resume(ServerBitmap* bitmap);
33 void SetClientData(overlay_client_data* clientData);
34 void SetFlags(uint32 flags);
35 void TakeOverToken(Overlay* other);
37 const overlay_buffer* OverlayBuffer() const;
38 overlay_client_data* ClientData() const;
39 overlay_token OverlayToken() const;
41 void SetColorSpace(uint32 colorSpace);
43 const overlay_window* OverlayWindow() const
44 { return &fWindow; }
45 const overlay_view* OverlayView() const
46 { return &fView; }
48 sem_id Semaphore() const
49 { return fSemaphore; }
51 const rgb_color& Color() const
52 { return fColor; }
54 void Configure(const BRect& source, const BRect& destination);
55 void Hide();
57 private:
58 void _FreeBuffer();
59 status_t _AllocateBuffer(ServerBitmap* bitmap);
61 HWInterface& fHWInterface;
62 const overlay_buffer* fOverlayBuffer;
63 overlay_client_data* fClientData;
64 overlay_token fOverlayToken;
65 overlay_view fView;
66 overlay_window fWindow;
67 sem_id fSemaphore;
68 rgb_color fColor;
71 #endif // OVERLAY_H