check for composite version 0.3
[dana/dcompmgr.git] / window.c
1 #include "window.h"
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 d_window_t*
6 window_new(xcb_window_t id, struct d_screen *sc)
7 {
8     d_window_t *w;
9
10     w = malloc(sizeof(d_window_t));
11     w->id = id;
12     w->ref = 1;
13     w->sc = sc;
14     w->mapped = FALSE;
15
16     /* default functions */
17     w->show = window_show;
18     w->hide = window_hide;
19
20     printf("new window 0x%x\n", w->id);
21
22     return w;
23 }
24
25 void
26 window_ref(d_window_t *w)
27 {
28     ++w->ref;
29 }
30
31 void
32 window_unref(d_window_t *w)
33 {
34     if (w && --w->ref == 0) {
35         free(w);
36     }
37 }
38
39 void
40 window_show(d_window_t *w)
41 {
42     if (w->mapped) return;
43
44     printf("show window 0x%x\n", w->id);
45
46     w->mapped = TRUE;
47 }
48
49 void
50 window_hide(d_window_t *w)
51 {
52     if (!w->mapped) return;
53
54     printf("hide window 0x%x\n", w->id);
55
56     w->mapped = FALSE;
57 }