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;
33 } /* _ecore_x_composite_init */
36 ecore_x_composite_query(void)
38 LOGFN(__FILE__, __LINE__, __FUNCTION__);
39 return _composite_available;
40 } /* ecore_x_composite_query */
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 */
62 } /* ecore_x_composite_redirect_window */
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 */
84 } /* ecore_x_composite_redirect_subwindows */
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 */
106 } /* ecore_x_composite_unredirect_window */
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 */
128 } /* ecore_x_composite_unredirect_subwindows */
131 ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win)
133 Ecore_X_Pixmap pixmap = None;
135 #ifdef ECORE_XCOMPOSITE
136 LOGFN(__FILE__, __LINE__, __FUNCTION__);
137 pixmap = XCompositeNameWindowPixmap(_ecore_x_disp, win);
138 #endif /* ifdef ECORE_XCOMPOSITE */
141 } /* ecore_x_composite_name_window_pixmap_get */
144 ecore_x_composite_window_events_disable(Ecore_X_Window win)
146 #ifdef ECORE_XCOMPOSITE
152 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
154 #endif /* ifdef ECORE_XCOMPOSITE */
158 ecore_x_composite_window_events_enable(Ecore_X_Window win)
160 #ifdef ECORE_XCOMPOSITE
166 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
168 #endif /* ifdef ECORE_XCOMPOSITE */
172 ecore_x_composite_render_window_enable(Ecore_X_Window root)
174 Ecore_X_Window win = 0;
175 #ifdef ECORE_XCOMPOSITE
178 LOGFN(__FILE__, __LINE__, __FUNCTION__);
179 win = XCompositeGetOverlayWindow(_ecore_x_disp, root);
184 XShapeCombineRectangles(_ecore_x_disp, win, ShapeInput, 0, 0, &rect, 1,
186 #endif /* ifdef ECORE_XCOMPOSITE */
188 } /* ecore_x_composite_render_window_enable */
191 ecore_x_composite_render_window_disable(Ecore_X_Window root)
193 #ifdef ECORE_XCOMPOSITE
194 LOGFN(__FILE__, __LINE__, __FUNCTION__);
195 XCompositeReleaseOverlayWindow(_ecore_x_disp, root);
196 #endif /* ifdef ECORE_XCOMPOSITE */
197 } /* ecore_x_composite_render_window_disable */