haiku/src/servers/app/DirectWindowInfo.h

57 lines
1.2 KiB
C++

/*
* Copyright 2008-2009, Haiku. All rights reserved.
* Distributed under the terms of the MIT License.
*
*/
#ifndef DIRECT_WINDOW_INFO_H
#define DIRECT_WINDOW_INFO_H
#include <Autolock.h>
#include <DirectWindow.h>
#include <DirectWindowPrivate.h>
class RenderingBuffer;
class DirectWindowInfo {
public:
DirectWindowInfo();
~DirectWindowInfo();
status_t InitCheck() const;
status_t GetSyncData(
direct_window_sync_data& data) const;
status_t SetState(direct_buffer_state bufferState,
direct_driver_state driverState,
RenderingBuffer* renderingBuffer,
const BRect& windowFrame,
const BRegion& clipRegion);
void EnableFullScreen(const BRect& frame,
window_feel feel);
void DisableFullScreen();
bool IsFullScreen() const { return fFullScreen; }
const BRect& OriginalFrame() const { return fOriginalFrame; }
window_feel OriginalFeel() const { return fOriginalFeel; }
private:
status_t _SyncronizeWithClient();
direct_buffer_info* fBufferInfo;
sem_id fSem;
sem_id fAcknowledgeSem;
area_id fBufferArea;
BRect fOriginalFrame;
window_feel fOriginalFeel;
bool fFullScreen;
};
#endif // DIRECT_WINDOW_INFO_H