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 1758468dfeSStephan 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: 27*34bd8bf5SJérôme Duval virtual ~ScreenOwner() {}; 28fd5bec1eSAxel Dörfler virtual void ScreenRemoved(Screen* screen) = 0; 29fd5bec1eSAxel Dörfler virtual void ScreenAdded(Screen* screen) = 0; 30fd5bec1eSAxel Dörfler 31fd5bec1eSAxel Dörfler virtual bool ReleaseScreen(Screen* screen) = 0; 32fd5bec1eSAxel Dörfler }; 33fd5bec1eSAxel Dörfler 34fd5bec1eSAxel Dörfler 35fd5bec1eSAxel Dörfler class ScreenManager : public BLooper { 36fd5bec1eSAxel Dörfler public: 37fd5bec1eSAxel Dörfler ScreenManager(); 38fd5bec1eSAxel Dörfler virtual ~ScreenManager(); 39fd5bec1eSAxel Dörfler 40fd5bec1eSAxel Dörfler Screen* ScreenAt(int32 index) const; 41fd5bec1eSAxel Dörfler int32 CountScreens() const; 42fd5bec1eSAxel Dörfler 43fd5bec1eSAxel Dörfler status_t AcquireScreens(ScreenOwner* owner, int32* wishList, 44fd5bec1eSAxel Dörfler int32 wishCount, bool force, ScreenList& list); 45fd5bec1eSAxel Dörfler void ReleaseScreens(ScreenList& list); 46fd5bec1eSAxel Dörfler 47fd5bec1eSAxel Dörfler virtual void MessageReceived(BMessage* message); 48fd5bec1eSAxel Dörfler 49fd5bec1eSAxel Dörfler private: 50fd5bec1eSAxel Dörfler void _ScanDrivers(); 51fd5bec1eSAxel Dörfler void _AddHWInterface(HWInterface* interface); 52fd5bec1eSAxel Dörfler 53fd5bec1eSAxel Dörfler struct screen_item { 54fd5bec1eSAxel Dörfler Screen* screen; 55fd5bec1eSAxel Dörfler ScreenOwner* owner; 56fd5bec1eSAxel Dörfler }; 57fd5bec1eSAxel Dörfler 58fd5bec1eSAxel Dörfler BObjectList<screen_item> fScreenList; 59fd5bec1eSAxel Dörfler }; 60fd5bec1eSAxel Dörfler 61fd5bec1eSAxel Dörfler extern ScreenManager *gScreenManager; 62fd5bec1eSAxel Dörfler 63fd5bec1eSAxel Dörfler #endif /* SCREEN_MANAGER_H */ 64