]> Dogcows Code - chaz/openbox/blob - openbox/composite.c
i am starting to loathe the composite extension, and xorg in general
[chaz/openbox] / openbox / composite.c
1 #include "composite.h"
2 #include "openbox.h"
3 #include "extensions.h"
4
5 #ifndef USE_XCOMPOSITE
6 void composite_startup(gboolean reconfig) {}
7 void composite_shutdown(gboolean reconfig) {}
8 gboolean composite_window_has_alpha(Visual *vis) { return FALSE; }
9 XID composite_get_window_picture(Window win, Visual *vis) { return None; }
10 Pixmap composite_get_window_pixmap(Window win) { return None; }
11 #else
12
13 static Picture root_picture = None;
14
15 void composite_startup(gboolean reconfig)
16 {
17 if (reconfig) return;
18 if (!extensions_comp) return;
19
20 /* Redirect window contents to offscreen pixmaps */
21 /*
22 XCompositeRedirectSubwindows(ob_display,
23 RootWindow(ob_display, ob_screen),
24 CompositeRedirectAutomatic);
25 */
26 }
27
28 void composite_shutdown(gboolean reconfig)
29 {
30 if (reconfig) return;
31 if (!extensions_comp) return;
32 }
33
34 void composite_setup_root_window()
35 {
36 if (root_picture)
37 XRenderFreePicture(ob_display, root_picture);
38
39 root_picture =
40 composite_get_window_picture(RootWindow(ob_display, ob_screen),
41 RrVisual(ob_rr_inst));
42 }
43
44 gboolean composite_window_has_alpha(Visual *vis)
45 {
46 XRenderPictFormat *format;
47
48 if (!extensions_comp) return FALSE;
49
50 format = XRenderFindVisualFormat(ob_display, vis);
51 return format->type == PictTypeDirect && format->direct.alphaMask;
52 }
53
54 XID composite_get_window_picture(Window win, Visual *vis)
55 {
56 XRenderPictureAttributes pa;
57 XRenderPictFormat *format;
58
59 if (!extensions_comp) return None;
60
61 format = XRenderFindVisualFormat(ob_display, vis);
62
63 pa.subwindow_mode = IncludeInferiors;
64 return XRenderCreatePicture(ob_display, win, format, CPSubwindowMode, &pa);
65 }
66
67 Pixmap composite_get_window_pixmap(Window win)
68 {
69 if (!extensions_comp) return None;
70
71 return XCompositeNameWindowPixmap(ob_display, win);
72 }
73
74 #endif
This page took 0.045169 seconds and 5 git commands to generate.