add a next_repaint time to each screen
[dana/dcompmgr.git] / screen.h
1 #ifndef dc__screen_h
2 #define dc__screen_h
3
4 #include <xcb/xcb.h>
5 #include <glib.h>
6 #include <sys/time.h>
7
8 struct d_window;
9 struct d_display;
10 struct d_list;
11
12 /* inherits from xcb_screen_t */
13 typedef struct d_screen {
14     xcb_screen_t      super;
15     struct d_display *dpy;
16     int               num;
17
18     xcb_window_t      selwin;  /* for the selection */
19     xcb_atom_t        selatom; /* ditto.. */
20
21     xcb_window_t      overlay;
22
23     struct timeval    next_repaint;
24
25     GHashTable       *winhash;
26     struct d_list    *stacking;
27
28     void (*paint)(struct d_screen *sc);
29 } d_screen_t;
30
31 /*! Tries to register on the screen given by @sc.  If it succeeds, it fills
32     in @sc and returns TRUE, otherwise it returns FALSE.
33 */
34 gboolean screen_register(struct d_display *dpy, int num, d_screen_t *sc);
35 void screen_free(d_screen_t *sc);
36
37 void screen_add_window(d_screen_t *sc, xcb_window_t wid);
38 void screen_remove_window(d_screen_t *sc, struct d_window *w);
39
40 struct d_window* screen_find_window(d_screen_t *sc, xcb_window_t id);
41
42 void screen_stacking_add(d_screen_t *sc, struct d_window *w);
43 void screen_stacking_remove(d_screen_t *sc, struct d_window *w);
44
45 void screen_set_next_repaint(d_screen_t *sc);
46
47 #endif