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