3 #endif /* ifdef HAVE_CONFIG_H */
5 #include "ecore_x_private.h"
8 static Eina_Bool _composite_available = EINA_FALSE;
11 _ecore_x_composite_init(void)
13 _composite_available = EINA_FALSE;
15 #ifdef ECORE_XCOMPOSITE
18 if (XCompositeQueryVersion(_ecore_x_disp, &major, &minor))
21 if (XRenderQueryExtension(_ecore_x_disp, &major, &minor))
24 if (XFixesQueryVersion(_ecore_x_disp, &major, &minor))
26 _composite_available = EINA_TRUE;
36 ecore_x_composite_query(void)
38 LOGFN(__FILE__, __LINE__, __FUNCTION__);
39 return _composite_available;
43 ecore_x_composite_redirect_window(Ecore_X_Window win,
44 Ecore_X_Composite_Update_Type type)
46 #ifdef ECORE_XCOMPOSITE
47 int update = CompositeRedirectAutomatic;
49 LOGFN(__FILE__, __LINE__, __FUNCTION__);
52 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
53 update = CompositeRedirectAutomatic;
56 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
57 update = CompositeRedirectManual;
60 XCompositeRedirectWindow(_ecore_x_disp, win, update);
61 #endif /* ifdef ECORE_XCOMPOSITE */
65 ecore_x_composite_redirect_subwindows(Ecore_X_Window win,
66 Ecore_X_Composite_Update_Type type)
68 #ifdef ECORE_XCOMPOSITE
69 int update = CompositeRedirectAutomatic;
71 LOGFN(__FILE__, __LINE__, __FUNCTION__);
74 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
75 update = CompositeRedirectAutomatic;
78 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
79 update = CompositeRedirectManual;
82 XCompositeRedirectSubwindows(_ecore_x_disp, win, update);
83 #endif /* ifdef ECORE_XCOMPOSITE */
87 ecore_x_composite_unredirect_window(Ecore_X_Window win,
88 Ecore_X_Composite_Update_Type type)
90 #ifdef ECORE_XCOMPOSITE
91 int update = CompositeRedirectAutomatic;
93 LOGFN(__FILE__, __LINE__, __FUNCTION__);
96 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
97 update = CompositeRedirectAutomatic;
100 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
101 update = CompositeRedirectManual;
104 XCompositeUnredirectWindow(_ecore_x_disp, win, update);
105 #endif /* ifdef ECORE_XCOMPOSITE */
109 ecore_x_composite_unredirect_subwindows(Ecore_X_Window win,
110 Ecore_X_Composite_Update_Type type)
112 #ifdef ECORE_XCOMPOSITE
113 int update = CompositeRedirectAutomatic;
115 LOGFN(__FILE__, __LINE__, __FUNCTION__);
118 case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
119 update = CompositeRedirectAutomatic;
122 case ECORE_X_COMPOSITE_UPDATE_MANUAL:
123 update = CompositeRedirectManual;
126 XCompositeUnredirectSubwindows(_ecore_x_disp, win, update);
127 #endif /* ifdef ECORE_XCOMPOSITE */
131 ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win)
133 Ecore_X_Pixmap pixmap = None;
134 #ifdef ECORE_XCOMPOSITE
135 LOGFN(__FILE__, __LINE__, __FUNCTION__);
136 pixmap = XCompositeNameWindowPixmap(_ecore_x_disp, win);
137 #endif /* ifdef ECORE_XCOMPOSITE */
142 ecore_x_composite_window_events_disable(Ecore_X_Window win)
144 #ifdef ECORE_XCOMPOSITE
145 ecore_x_window_shape_input_rectangle_set(win, -1, -1, 1, 1);
146 #endif /* ifdef ECORE_XCOMPOSITE */
150 ecore_x_composite_window_events_enable(Ecore_X_Window win)
152 #ifdef ECORE_XCOMPOSITE
153 ecore_x_window_shape_input_rectangle_set(win, 0, 0, 65535, 65535);
154 #endif /* ifdef ECORE_XCOMPOSITE */
158 ecore_x_composite_render_window_enable(Ecore_X_Window root)
160 Ecore_X_Window win = 0;
161 #ifdef ECORE_XCOMPOSITE
162 win = XCompositeGetOverlayWindow(_ecore_x_disp, root);
163 ecore_x_composite_window_events_disable(win);
164 #endif /* ifdef ECORE_XCOMPOSITE */
169 ecore_x_composite_render_window_disable(Ecore_X_Window root)
171 #ifdef ECORE_XCOMPOSITE
172 LOGFN(__FILE__, __LINE__, __FUNCTION__);
173 XCompositeReleaseOverlayWindow(_ecore_x_disp, root);
174 #endif /* ifdef ECORE_XCOMPOSITE */