181dd6a02f13d2752da0f60662d62f3d3bfc169a
[dana/dcompmgr.git] / display.h
1 #ifndef dc__display_h
2 #define dc__display_h
3
4 #include <xcb/xcb.h>
5
6 #include <glib.h>
7
8 struct d_list;
9
10 typedef struct d_display_ext {
11     gboolean          present;
12     int               error;
13     int               event;
14     int               opcode;
15     int               major_version;
16     int               minor_version;
17 } d_display_ext_t;
18
19 typedef struct d_display {
20     xcb_connection_t *conn;
21     int               ref;
22     int               fd;
23     struct d_list    *screens;
24
25     d_display_ext_t xfixes;
26     d_display_ext_t render;
27     d_display_ext_t composite;
28     d_display_ext_t damage;
29
30     struct {
31         /* types */
32         xcb_atom_t atom;
33         xcb_atom_t cardinal;
34         xcb_atom_t utf8_string;
35         xcb_atom_t string;
36         xcb_atom_t pixmap;
37         /* properties */
38         xcb_atom_t esetroot_pmap_id;
39         xcb_atom_t xrootpmap_id;
40         xcb_atom_t xsetroot_id;
41         xcb_atom_t net_wm_window_type;
42         xcb_atom_t net_wm_window_type_desktop;
43         xcb_atom_t net_wm_window_type_dock;
44         xcb_atom_t net_wm_window_type_normal;
45         xcb_atom_t net_wm_window_type_dialog;
46         xcb_atom_t net_wm_window_type_toolbar;
47         xcb_atom_t net_wm_window_type_menu;
48         xcb_atom_t net_wm_window_type_utility;
49         xcb_atom_t net_wm_window_type_splash;
50         xcb_atom_t net_wm_window_type_dropdown_menu;
51         xcb_atom_t net_wm_window_type_popup_menu;
52         xcb_atom_t net_wm_window_type_tooltip;
53         xcb_atom_t net_wm_window_type_notification;
54         xcb_atom_t net_wm_window_type_combo;
55         xcb_atom_t net_wm_window_type_dnd;
56     } a;
57 } d_display_t;
58
59 d_display_t* display_open(const char *name);
60
61 void display_ref(d_display_t *dpy);
62 void display_unref(d_display_t *dpy);
63
64 int display_claim_screens(d_display_t *dpy);
65
66 struct d_screen* display_screen_from_root(d_display_t *dpy, xcb_window_t root);
67
68 void display_error(d_display_t *dpy, xcb_generic_error_t *ev);
69
70 #endif