xref: /haiku/src/servers/app/AppServer.h (revision 8a6724a0ee3803f1e9f487d8111bb3f6cb8d16db)
1 /*
2  * Copyright 2001-2015, Haiku, Inc.
3  * Distributed under the terms of the MIT license.
4  *
5  * Authors:
6  *		DarkWyrm <bpmagic@columbus.rr.com>
7  *		Axel Dörfler, axeld@pinc-software.de
8  */
9 #ifndef	APP_SERVER_H
10 #define	APP_SERVER_H
11 
12 
13 #include <Application.h>
14 #include <List.h>
15 #include <Locker.h>
16 #include <ObjectList.h>
17 #include <OS.h>
18 #include <String.h>
19 #include <Window.h>
20 
21 #include "MessageLooper.h"
22 #include "ServerConfig.h"
23 
24 
25 #ifndef HAIKU_TARGET_PLATFORM_LIBBE_TEST
26 #	include <Server.h>
27 #	define SERVER_BASE BServer
28 #else
29 #	include "TestServerLoopAdapter.h"
30 #	define SERVER_BASE TestServerLoopAdapter
31 #endif
32 
33 
34 class ServerApp;
35 class BitmapManager;
36 class Desktop;
37 
38 
39 class AppServer : public SERVER_BASE {
40 public:
41 								AppServer(status_t* status);
42 	virtual						~AppServer();
43 
44 	virtual	void				MessageReceived(BMessage* message);
45 	virtual	bool				QuitRequested();
46 
47 private:
48 			Desktop*			_CreateDesktop(uid_t userID,
49 									const char* targetScreen);
50 	virtual	Desktop*			_FindDesktop(uid_t userID,
51 									const char* targetScreen);
52 
53 			void				_LaunchInputServer();
54 
55 private:
56 			BObjectList<Desktop> fDesktops;
57 			BLocker				fDesktopLock;
58 };
59 
60 
61 extern BitmapManager *gBitmapManager;
62 extern port_id gAppServerPort;
63 
64 
65 #endif	/* APP_SERVER_H */
66