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