3 #endif /* ifdef HAVE_CONFIG_H */
5 #include "ecore_x_private.h"
8 static int _composite_available;
11 _ecore_x_composite_init(void)
13 _composite_available = 0;
15 #ifdef ECORE_XCOMPOSITE
18 if (XCompositeQueryVersion(_ecore_x_disp, &major, &minor))
19 _composite_available = 1;
21 #endif /* ifdef ECORE_XCOMPOSITE */
22 } /* _ecore_x_composite_init */
25 ecore_x_composite_query(void)
27 LOGFN(__FILE__, __LINE__, __FUNCTION__);
28 return _composite_available;
29 } /* ecore_x_composite_query */
32 ecore_x_composite_redirect_window(Ecore_X_Window win,
33 Ecore_X_Composite_Update_Type type)
35 #ifdef ECORE_XCOMPOSITE
36 int update = CompositeRedirectAutomatic;
38 LOGFN(__FILE__, __LINE__, __FUNCTION__);
41 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
42 update = CompositeRedirectAutomatic;
45 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
46 update = CompositeRedirectManual;
49 XCompositeRedirectWindow(_ecore_x_disp, win, update);
50 #endif /* ifdef ECORE_XCOMPOSITE */
51 } /* ecore_x_composite_redirect_window */
54 ecore_x_composite_redirect_subwindows(Ecore_X_Window win,
55 Ecore_X_Composite_Update_Type type)
57 #ifdef ECORE_XCOMPOSITE
58 int update = CompositeRedirectAutomatic;
60 LOGFN(__FILE__, __LINE__, __FUNCTION__);
63 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
64 update = CompositeRedirectAutomatic;
67 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
68 update = CompositeRedirectManual;
71 XCompositeRedirectSubwindows(_ecore_x_disp, win, update);
72 #endif /* ifdef ECORE_XCOMPOSITE */
73 } /* ecore_x_composite_redirect_subwindows */
76 ecore_x_composite_unredirect_window(Ecore_X_Window win,
77 Ecore_X_Composite_Update_Type type)
79 #ifdef ECORE_XCOMPOSITE
80 int update = CompositeRedirectAutomatic;
82 LOGFN(__FILE__, __LINE__, __FUNCTION__);
85 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
86 update = CompositeRedirectAutomatic;
89 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
90 update = CompositeRedirectManual;
93 XCompositeUnredirectWindow(_ecore_x_disp, win, update);
94 #endif /* ifdef ECORE_XCOMPOSITE */
95 } /* ecore_x_composite_unredirect_window */
98 ecore_x_composite_unredirect_subwindows(Ecore_X_Window win,
99 Ecore_X_Composite_Update_Type type)
101 #ifdef ECORE_XCOMPOSITE
102 int update = CompositeRedirectAutomatic;
104 LOGFN(__FILE__, __LINE__, __FUNCTION__);
107 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
108 update = CompositeRedirectAutomatic;
111 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
112 update = CompositeRedirectManual;
115 XCompositeUnredirectSubwindows(_ecore_x_disp, win, update);
116 #endif /* ifdef ECORE_XCOMPOSITE */
117 } /* ecore_x_composite_unredirect_subwindows */
120 ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win)
122 Ecore_X_Pixmap pixmap = None;
124 #ifdef ECORE_XCOMPOSITE
125 LOGFN(__FILE__, __LINE__, __FUNCTION__);
126 pixmap = XCompositeNameWindowPixmap(_ecore_x_disp, win);
127 #endif /* ifdef ECORE_XCOMPOSITE */
130 } /* ecore_x_composite_name_window_pixmap_get */
133 ecore_x_composite_window_events_disable(Ecore_X_Window win)
135 #ifdef ECORE_XCOMPOSITE
141 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
143 #endif /* ifdef ECORE_XCOMPOSITE */
147 ecore_x_composite_window_events_enable(Ecore_X_Window win)
149 #ifdef ECORE_XCOMPOSITE
155 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
157 #endif /* ifdef ECORE_XCOMPOSITE */
161 ecore_x_composite_render_window_enable(Ecore_X_Window root)
163 Ecore_X_Window win = 0;
164 #ifdef ECORE_XCOMPOSITE
167 LOGFN(__FILE__, __LINE__, __FUNCTION__);
168 win = XCompositeGetOverlayWindow(_ecore_x_disp, root);
173 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
175 #endif /* ifdef ECORE_XCOMPOSITE */
177 } /* ecore_x_composite_render_window_enable */
180 ecore_x_composite_render_window_disable(Ecore_X_Window root)
182 #ifdef ECORE_XCOMPOSITE
183 LOGFN(__FILE__, __LINE__, __FUNCTION__);
184 XCompositeReleaseOverlayWindow(_ecore_x_disp, root);
185 #endif /* ifdef ECORE_XCOMPOSITE */
186 } /* ecore_x_composite_render_window_disable */