root/src/servers/app/DirectWindowInfo.h
/*
 * 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                        _SynchronizeWithClient();

                        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