1/*
2 * Copyright 2008-2009, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 */
6#ifndef DIRECT_WINDOW_INFO_H
7#define DIRECT_WINDOW_INFO_H
8
9
10#include <Autolock.h>
11#include <DirectWindow.h>
12
13#include <DirectWindowPrivate.h>
14
15class RenderingBuffer;
16
17
18class DirectWindowInfo {
19public:
20								DirectWindowInfo();
21								~DirectWindowInfo();
22
23			status_t			InitCheck() const;
24
25			status_t			GetSyncData(
26									direct_window_sync_data& data) const;
27
28			status_t			SetState(direct_buffer_state bufferState,
29									direct_driver_state driverState,
30									RenderingBuffer* renderingBuffer,
31									const BRect& windowFrame,
32									const BRegion& clipRegion);
33
34			void				EnableFullScreen(const BRect& frame,
35									window_feel feel);
36			void				DisableFullScreen();
37
38			bool				IsFullScreen() const { return fFullScreen; }
39			const BRect&		OriginalFrame() const { return fOriginalFrame; }
40			window_feel			OriginalFeel() const { return fOriginalFeel; }
41
42private:
43			status_t			_SyncronizeWithClient();
44
45			direct_buffer_info*	fBufferInfo;
46			sem_id				fSem;
47			sem_id				fAcknowledgeSem;
48			area_id				fBufferArea;
49
50			BRect				fOriginalFrame;
51			window_feel			fOriginalFeel;
52			bool				fFullScreen;
53};
54
55
56#endif	// DIRECT_WINDOW_INFO_H
57