1 #ifndef _OPENBEOS_APP_SERVER_H_ 2 #define _OPENBEOS_APP_SERVER_H_ 3 4 #include <OS.h> 5 #include <Locker.h> 6 #include <List.h> 7 #include <Application.h> 8 #include <Window.h> 9 #include <String.h> 10 #include "Decorator.h" 11 #include "ServerConfig.h" 12 13 class Layer; 14 class BMessage; 15 class ServerApp; 16 class DisplayDriver; 17 class BPortLink; 18 class CursorManager; 19 class BitmapManager; 20 21 /*! 22 \class AppServer AppServer.h 23 \brief main manager object for the app_server 24 25 File for the main app_server thread. This particular thread monitors for 26 application start and quit messages. It also starts the housekeeping threads 27 and initializes most of the server's globals. 28 */ 29 #if TEST_MODE 30 class AppServer : public BApplication 31 #else 32 class AppServer 33 #endif 34 { 35 public: 36 AppServer(void); 37 ~AppServer(void); 38 39 static int32 PollerThread(void *data); 40 static int32 PicassoThread(void *data); 41 thread_id Run(void); 42 void MainLoop(void); 43 44 bool LoadDecorator(const char *path); 45 void InitDecorators(void); 46 47 void DispatchMessage(int32 code, BPortLink &link); 48 void Broadcast(int32 code); 49 50 ServerApp* FindApp(const char *sig); 51 52 private: 53 void LaunchCursorThread(); 54 void LaunchInputServer(); 55 static int32 CursorThread(void *data); 56 57 friend Decorator* new_decorator(BRect rect, const char *title, 58 int32 wlook, int32 wfeel, int32 wflags, DisplayDriver *ddriver); 59 60 // global function pointer 61 create_decorator *make_decorator; 62 63 port_id fMessagePort; 64 port_id fServerInputPort; 65 66 image_id fDecoratorID; 67 68 BString fDecoratorName; 69 70 volatile bool fQuittingServer; 71 72 BList *fAppList; 73 thread_id fPicassoThreadID; 74 75 thread_id fISThreadID; 76 thread_id fCursorThreadID; 77 sem_id fCursorSem; 78 area_id fCursorArea; 79 uint32 *fCursorAddr; 80 81 port_id fISASPort; 82 port_id fISPort; 83 84 sem_id fActiveAppLock, 85 fAppListLock, 86 fDecoratorLock; 87 88 DisplayDriver *fDriver; 89 }; 90 91 Decorator *new_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel, 92 int32 wflags, DisplayDriver *ddriver); 93 94 extern BitmapManager *bitmapmanager; 95 extern ColorSet gui_colorset; 96 extern AppServer *app_server; 97 98 #endif 99