1*fd5bec1eSAxel Dörfler /* 2*fd5bec1eSAxel Dörfler * Copyright 2005, Haiku. 3*fd5bec1eSAxel Dörfler * Distributed under the terms of the MIT License. 4*fd5bec1eSAxel Dörfler * 5*fd5bec1eSAxel Dörfler * Authors: 6*fd5bec1eSAxel Dörfler * Axel Dörfler, axeld@pinc-software.de 7*fd5bec1eSAxel Dörfler */ 8*fd5bec1eSAxel Dörfler #ifndef SCREEN_MANAGER_H 9*fd5bec1eSAxel Dörfler #define SCREEN_MANAGER_H 10*fd5bec1eSAxel Dörfler 11*fd5bec1eSAxel Dörfler 12*fd5bec1eSAxel Dörfler #include <Looper.h> 13*fd5bec1eSAxel Dörfler #include <ObjectList.h> 14*fd5bec1eSAxel Dörfler 15*fd5bec1eSAxel Dörfler class BMessage; 16*fd5bec1eSAxel Dörfler 17*fd5bec1eSAxel Dörfler class DisplayDriver; 18*fd5bec1eSAxel Dörfler class HWInterface; 19*fd5bec1eSAxel Dörfler class Screen; 20*fd5bec1eSAxel Dörfler 21*fd5bec1eSAxel Dörfler 22*fd5bec1eSAxel Dörfler typedef BObjectList<Screen> ScreenList; 23*fd5bec1eSAxel Dörfler 24*fd5bec1eSAxel Dörfler 25*fd5bec1eSAxel Dörfler class ScreenOwner { 26*fd5bec1eSAxel Dörfler public: 27*fd5bec1eSAxel Dörfler virtual void ScreenRemoved(Screen* screen) = 0; 28*fd5bec1eSAxel Dörfler virtual void ScreenAdded(Screen* screen) = 0; 29*fd5bec1eSAxel Dörfler 30*fd5bec1eSAxel Dörfler virtual bool ReleaseScreen(Screen* screen) = 0; 31*fd5bec1eSAxel Dörfler }; 32*fd5bec1eSAxel Dörfler 33*fd5bec1eSAxel Dörfler 34*fd5bec1eSAxel Dörfler class ScreenManager : public BLooper { 35*fd5bec1eSAxel Dörfler public: 36*fd5bec1eSAxel Dörfler ScreenManager(); 37*fd5bec1eSAxel Dörfler virtual ~ScreenManager(); 38*fd5bec1eSAxel Dörfler 39*fd5bec1eSAxel Dörfler Screen* ScreenAt(int32 index) const; 40*fd5bec1eSAxel Dörfler int32 CountScreens() const; 41*fd5bec1eSAxel Dörfler 42*fd5bec1eSAxel Dörfler status_t AcquireScreens(ScreenOwner* owner, int32* wishList, 43*fd5bec1eSAxel Dörfler int32 wishCount, bool force, ScreenList& list); 44*fd5bec1eSAxel Dörfler void ReleaseScreens(ScreenList& list); 45*fd5bec1eSAxel Dörfler 46*fd5bec1eSAxel Dörfler virtual void MessageReceived(BMessage* message); 47*fd5bec1eSAxel Dörfler 48*fd5bec1eSAxel Dörfler private: 49*fd5bec1eSAxel Dörfler void _ScanDrivers(); 50*fd5bec1eSAxel Dörfler void _AddHWInterface(HWInterface* interface); 51*fd5bec1eSAxel Dörfler 52*fd5bec1eSAxel Dörfler struct screen_item { 53*fd5bec1eSAxel Dörfler Screen* screen; 54*fd5bec1eSAxel Dörfler ScreenOwner* owner; 55*fd5bec1eSAxel Dörfler }; 56*fd5bec1eSAxel Dörfler 57*fd5bec1eSAxel Dörfler BObjectList<screen_item> fScreenList; 58*fd5bec1eSAxel Dörfler }; 59*fd5bec1eSAxel Dörfler 60*fd5bec1eSAxel Dörfler extern ScreenManager *gScreenManager; 61*fd5bec1eSAxel Dörfler 62*fd5bec1eSAxel Dörfler #endif /* SCREEN_MANAGER_H */ 63