983c2ad6b4ec7b2a01a06b8c39c3f042ed22c699
[staging/windowmanager.git] / AFBClient.h
1 #ifndef AFBCLIENT_H
2 #define AFBCLIENT_H
3
4 #include <functional>
5
6 class AFBClient
7 {
8     AFBClient();
9     ~AFBClient();
10
11     AFBClient(const AFBClient &) = delete;
12     AFBClient &operator=(const AFBClient &) = delete;
13
14 public:
15     typedef std::function<void(char const *label)> handler_fun;
16
17     enum EventType {
18        Event_Active = 1,
19        Event_Inactive,
20
21        Event_Visible,
22        Event_Invisible,
23
24        Event_SyncDraw,
25        Event_FlushDraw,
26     };
27
28     static AFBClient &instance();
29
30     int init(int port, char const *token);
31     int dispatch();
32
33     // WM API
34     int requestSurface(const char *label);
35     int activateSurface(const char *label);
36     int deactivateSurface(const char *label);
37     int endDraw(const char *label);
38
39     void set_event_handler(enum EventType et, handler_fun f);
40
41     struct Impl;
42
43 private:
44     Impl *d;
45 };
46 #endif // AFBCLIENT_H