diff options
author | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
commit | dd7595a3475407a7fa96a97393bae8c5220e8762 (patch) | |
tree | e341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c | |
parent | Add the skeleton. (diff) | |
download | SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2 SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz |
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c')
-rw-r--r-- | libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c | 1060 |
1 files changed, 1060 insertions, 0 deletions
diff --git a/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c b/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c new file mode 100644 index 0000000..d357c9b --- /dev/null +++ b/libraries/ecore/src/lib/ecore_x/xlib/ecore_x_e.c | |||
@@ -0,0 +1,1060 @@ | |||
1 | /* | ||
2 | * OLD E hints | ||
3 | */ | ||
4 | |||
5 | #ifdef HAVE_CONFIG_H | ||
6 | # include <config.h> | ||
7 | #endif /* ifdef HAVE_CONFIG_H */ | ||
8 | |||
9 | #include "Ecore.h" | ||
10 | #include "ecore_x_private.h" | ||
11 | #include "Ecore_X.h" | ||
12 | #include "Ecore_X_Atoms.h" | ||
13 | |||
14 | EAPI void | ||
15 | ecore_x_e_init(void) | ||
16 | { | ||
17 | } /* ecore_x_e_init */ | ||
18 | |||
19 | EAPI void | ||
20 | ecore_x_e_frame_size_set(Ecore_X_Window win, | ||
21 | int fl, | ||
22 | int fr, | ||
23 | int ft, | ||
24 | int fb) | ||
25 | { | ||
26 | unsigned int frames[4]; | ||
27 | |||
28 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
29 | frames[0] = fl; | ||
30 | frames[1] = fr; | ||
31 | frames[2] = ft; | ||
32 | frames[3] = fb; | ||
33 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4); | ||
34 | } /* ecore_x_e_frame_size_set */ | ||
35 | |||
36 | EAPI void | ||
37 | ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, | ||
38 | unsigned int is_keyboard) | ||
39 | { | ||
40 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
41 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD, | ||
42 | &is_keyboard, 1); | ||
43 | } /* ecore_x_e_virtual_keyboard_set */ | ||
44 | |||
45 | EAPI Eina_Bool | ||
46 | ecore_x_e_virtual_keyboard_get(Ecore_X_Window win) | ||
47 | { | ||
48 | unsigned int val; | ||
49 | |||
50 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
51 | if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD, | ||
52 | &val, 1)) | ||
53 | return EINA_FALSE; | ||
54 | |||
55 | return val ? EINA_TRUE : EINA_FALSE; | ||
56 | } /* ecore_x_e_virtual_keyboard_get */ | ||
57 | |||
58 | static Ecore_X_Virtual_Keyboard_State | ||
59 | _ecore_x_e_vkbd_state_get(Ecore_X_Atom atom) | ||
60 | { | ||
61 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON) | ||
62 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON; | ||
63 | |||
64 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF) | ||
65 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF; | ||
66 | |||
67 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA) | ||
68 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA; | ||
69 | |||
70 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC) | ||
71 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC; | ||
72 | |||
73 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN) | ||
74 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN; | ||
75 | |||
76 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER) | ||
77 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER; | ||
78 | |||
79 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX) | ||
80 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX; | ||
81 | |||
82 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL) | ||
83 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL; | ||
84 | |||
85 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD) | ||
86 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD; | ||
87 | |||
88 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP) | ||
89 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_IP; | ||
90 | |||
91 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST) | ||
92 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST; | ||
93 | |||
94 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE) | ||
95 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE; | ||
96 | |||
97 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL) | ||
98 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_URL; | ||
99 | |||
100 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD) | ||
101 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD; | ||
102 | |||
103 | if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME) | ||
104 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME; | ||
105 | |||
106 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN; | ||
107 | } /* _ecore_x_e_vkbd_state_get */ | ||
108 | |||
109 | static Ecore_X_Atom | ||
110 | _ecore_x_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state) | ||
111 | { | ||
112 | switch (state) | ||
113 | { | ||
114 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF: | ||
115 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF; | ||
116 | |||
117 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON: | ||
118 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON; | ||
119 | |||
120 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA: | ||
121 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA; | ||
122 | |||
123 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC: | ||
124 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC; | ||
125 | |||
126 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN: | ||
127 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN; | ||
128 | |||
129 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER: | ||
130 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER; | ||
131 | |||
132 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX: | ||
133 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX; | ||
134 | |||
135 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL: | ||
136 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL; | ||
137 | |||
138 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD: | ||
139 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD; | ||
140 | |||
141 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_IP: | ||
142 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP; | ||
143 | |||
144 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST: | ||
145 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST; | ||
146 | |||
147 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE: | ||
148 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE; | ||
149 | |||
150 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_URL: | ||
151 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL; | ||
152 | |||
153 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD: | ||
154 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD; | ||
155 | |||
156 | case ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME: | ||
157 | return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME; | ||
158 | |||
159 | default: break; | ||
160 | } /* switch */ | ||
161 | return 0; | ||
162 | } /* _ecore_x_e_vkbd_atom_get */ | ||
163 | |||
164 | EAPI void | ||
165 | ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, | ||
166 | Ecore_X_Virtual_Keyboard_State state) | ||
167 | { | ||
168 | Ecore_X_Atom atom = 0; | ||
169 | |||
170 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
171 | atom = _ecore_x_e_vkbd_atom_get(state); | ||
172 | ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE, | ||
173 | &atom, 1); | ||
174 | } /* ecore_x_e_virtual_keyboard_state_set */ | ||
175 | |||
176 | EAPI Ecore_X_Virtual_Keyboard_State | ||
177 | ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win) | ||
178 | { | ||
179 | Ecore_X_Atom atom; | ||
180 | |||
181 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
182 | if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE, | ||
183 | &atom, 1)) | ||
184 | return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN; | ||
185 | |||
186 | return _ecore_x_e_vkbd_state_get(atom); | ||
187 | } /* ecore_x_e_virtual_keyboard_state_get */ | ||
188 | |||
189 | EAPI void | ||
190 | ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, | ||
191 | Ecore_X_Virtual_Keyboard_State state) | ||
192 | { | ||
193 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
194 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE, | ||
195 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
196 | _ecore_x_e_vkbd_atom_get(state), | ||
197 | 0, 0, 0, 0); | ||
198 | } /* ecore_x_e_virtual_keyboard_state_send */ | ||
199 | |||
200 | static Ecore_X_Atom | ||
201 | _ecore_x_e_illume_atom_get(Ecore_X_Illume_Mode mode) | ||
202 | { | ||
203 | switch (mode) | ||
204 | { | ||
205 | case ECORE_X_ILLUME_MODE_SINGLE: | ||
206 | return ECORE_X_ATOM_E_ILLUME_MODE_SINGLE; | ||
207 | |||
208 | case ECORE_X_ILLUME_MODE_DUAL_TOP: | ||
209 | return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP; | ||
210 | |||
211 | case ECORE_X_ILLUME_MODE_DUAL_LEFT: | ||
212 | return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT; | ||
213 | |||
214 | default: | ||
215 | break; | ||
216 | } /* switch */ | ||
217 | return ECORE_X_ILLUME_MODE_UNKNOWN; | ||
218 | } /* _ecore_x_e_illume_atom_get */ | ||
219 | |||
220 | static Ecore_X_Illume_Mode | ||
221 | _ecore_x_e_illume_mode_get(Ecore_X_Atom atom) | ||
222 | { | ||
223 | if (atom == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE) | ||
224 | return ECORE_X_ILLUME_MODE_SINGLE; | ||
225 | |||
226 | if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP) | ||
227 | return ECORE_X_ILLUME_MODE_DUAL_TOP; | ||
228 | |||
229 | if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT) | ||
230 | return ECORE_X_ILLUME_MODE_DUAL_LEFT; | ||
231 | |||
232 | return ECORE_X_ILLUME_MODE_UNKNOWN; | ||
233 | } /* _ecore_x_e_illume_mode_get */ | ||
234 | |||
235 | EAPI void | ||
236 | ecore_x_e_illume_zone_set(Ecore_X_Window win, | ||
237 | Ecore_X_Window zone) | ||
238 | { | ||
239 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
240 | ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE, | ||
241 | &zone, 1); | ||
242 | } /* ecore_x_e_illume_zone_set */ | ||
243 | |||
244 | EAPI Ecore_X_Window | ||
245 | ecore_x_e_illume_zone_get(Ecore_X_Window win) | ||
246 | { | ||
247 | Ecore_X_Window zone; | ||
248 | |||
249 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
250 | if (!ecore_x_window_prop_window_get(win, ECORE_X_ATOM_E_ILLUME_ZONE, | ||
251 | &zone, 1)) | ||
252 | return 0; | ||
253 | |||
254 | return zone; | ||
255 | } /* ecore_x_e_illume_zone_get */ | ||
256 | |||
257 | EAPI void | ||
258 | ecore_x_e_illume_zone_list_set(Ecore_X_Window win, | ||
259 | Ecore_X_Window *zones, | ||
260 | unsigned int n_zones) | ||
261 | { | ||
262 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
263 | ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE_LIST, | ||
264 | zones, n_zones); | ||
265 | } /* ecore_x_e_illume_zone_list_set */ | ||
266 | |||
267 | EAPI void | ||
268 | ecore_x_e_illume_conformant_set(Ecore_X_Window win, | ||
269 | unsigned int is_conformant) | ||
270 | { | ||
271 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
272 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT, | ||
273 | &is_conformant, 1); | ||
274 | } /* ecore_x_e_illume_conformant_set */ | ||
275 | |||
276 | EAPI Eina_Bool | ||
277 | ecore_x_e_illume_conformant_get(Ecore_X_Window win) | ||
278 | { | ||
279 | unsigned int val = 0; | ||
280 | |||
281 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
282 | if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT, | ||
283 | &val, 1)) | ||
284 | return EINA_FALSE; | ||
285 | |||
286 | return val ? EINA_TRUE : EINA_FALSE; | ||
287 | } /* ecore_x_e_illume_conformant_get */ | ||
288 | |||
289 | EAPI void | ||
290 | ecore_x_e_illume_mode_set(Ecore_X_Window win, | ||
291 | Ecore_X_Illume_Mode mode) | ||
292 | { | ||
293 | Ecore_X_Atom atom = 0; | ||
294 | |||
295 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
296 | atom = _ecore_x_e_illume_atom_get(mode); | ||
297 | ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_MODE, | ||
298 | &atom, 1); | ||
299 | } /* ecore_x_e_illume_mode_set */ | ||
300 | |||
301 | EAPI Ecore_X_Illume_Mode | ||
302 | ecore_x_e_illume_mode_get(Ecore_X_Window win) | ||
303 | { | ||
304 | Ecore_X_Atom atom = 0; | ||
305 | |||
306 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
307 | if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1)) | ||
308 | return ECORE_X_ILLUME_MODE_UNKNOWN; | ||
309 | |||
310 | return _ecore_x_e_illume_mode_get(atom); | ||
311 | } /* ecore_x_e_illume_mode_get */ | ||
312 | |||
313 | EAPI void | ||
314 | ecore_x_e_illume_mode_send(Ecore_X_Window win, | ||
315 | Ecore_X_Illume_Mode mode) | ||
316 | { | ||
317 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
318 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_MODE, | ||
319 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
320 | _ecore_x_e_illume_atom_get(mode), | ||
321 | 0, 0, 0, 0); | ||
322 | } /* ecore_x_e_illume_mode_send */ | ||
323 | |||
324 | EAPI void | ||
325 | ecore_x_e_illume_focus_back_send(Ecore_X_Window win) | ||
326 | { | ||
327 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
328 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_BACK, | ||
329 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
330 | 1, 0, 0, 0, 0); | ||
331 | } /* ecore_x_e_illume_focus_back_send */ | ||
332 | |||
333 | EAPI void | ||
334 | ecore_x_e_illume_focus_forward_send(Ecore_X_Window win) | ||
335 | { | ||
336 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
337 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD, | ||
338 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
339 | 1, 0, 0, 0, 0); | ||
340 | } /* ecore_x_e_illume_focus_forward_send */ | ||
341 | |||
342 | EAPI void | ||
343 | ecore_x_e_illume_focus_home_send(Ecore_X_Window win) | ||
344 | { | ||
345 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
346 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_HOME, | ||
347 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
348 | 1, 0, 0, 0, 0); | ||
349 | } /* ecore_x_e_illume_focus_home_send */ | ||
350 | |||
351 | EAPI void | ||
352 | ecore_x_e_illume_close_send(Ecore_X_Window win) | ||
353 | { | ||
354 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
355 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_CLOSE, | ||
356 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
357 | 1, 0, 0, 0, 0); | ||
358 | } /* ecore_x_e_illume_close_send */ | ||
359 | |||
360 | EAPI void | ||
361 | ecore_x_e_illume_home_new_send(Ecore_X_Window win) | ||
362 | { | ||
363 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
364 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_NEW, | ||
365 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
366 | 1, 0, 0, 0, 0); | ||
367 | } /* ecore_x_e_illume_home_new_send */ | ||
368 | |||
369 | EAPI void | ||
370 | ecore_x_e_illume_home_del_send(Ecore_X_Window win) | ||
371 | { | ||
372 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
373 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_DEL, | ||
374 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
375 | 1, 0, 0, 0, 0); | ||
376 | } /* ecore_x_e_illume_home_del_send */ | ||
377 | |||
378 | EAPI void | ||
379 | ecore_x_e_illume_drag_set(Ecore_X_Window win, | ||
380 | unsigned int drag) | ||
381 | { | ||
382 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
383 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG, &drag, 1); | ||
384 | } /* ecore_x_e_illume_drag_set */ | ||
385 | |||
386 | EAPI Eina_Bool | ||
387 | ecore_x_e_illume_drag_get(Ecore_X_Window win) | ||
388 | { | ||
389 | unsigned int val = 0; | ||
390 | |||
391 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
392 | if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG, &val, 1)) | ||
393 | return EINA_FALSE; | ||
394 | |||
395 | return val ? EINA_TRUE : EINA_FALSE; | ||
396 | } /* ecore_x_e_illume_drag_get */ | ||
397 | |||
398 | EAPI void | ||
399 | ecore_x_e_illume_drag_locked_set(Ecore_X_Window win, | ||
400 | unsigned int is_locked) | ||
401 | { | ||
402 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
403 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED, | ||
404 | &is_locked, 1); | ||
405 | } /* ecore_x_e_illume_drag_locked_set */ | ||
406 | |||
407 | EAPI Eina_Bool | ||
408 | ecore_x_e_illume_drag_locked_get(Ecore_X_Window win) | ||
409 | { | ||
410 | unsigned int val = 0; | ||
411 | |||
412 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
413 | if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED, | ||
414 | &val, 1)) | ||
415 | return EINA_FALSE; | ||
416 | |||
417 | return val ? EINA_TRUE : EINA_FALSE; | ||
418 | } /* ecore_x_e_illume_drag_locked_get */ | ||
419 | |||
420 | EAPI void | ||
421 | ecore_x_e_illume_drag_start_send(Ecore_X_Window win) | ||
422 | { | ||
423 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
424 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_START, | ||
425 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
426 | 1, 0, 0, 0, 0); | ||
427 | } /* ecore_x_e_illume_drag_start_send */ | ||
428 | |||
429 | EAPI void | ||
430 | ecore_x_e_illume_drag_end_send(Ecore_X_Window win) | ||
431 | { | ||
432 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
433 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_END, | ||
434 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
435 | 1, 0, 0, 0, 0); | ||
436 | } /* ecore_x_e_illume_drag_end_send */ | ||
437 | |||
438 | EAPI void | ||
439 | ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win, | ||
440 | int x, | ||
441 | int y, | ||
442 | int w, | ||
443 | int h) | ||
444 | { | ||
445 | unsigned int geom[4]; | ||
446 | |||
447 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
448 | geom[0] = x; | ||
449 | geom[1] = y; | ||
450 | geom[2] = w; | ||
451 | geom[3] = h; | ||
452 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY, | ||
453 | geom, 4); | ||
454 | } /* ecore_x_e_illume_indicator_geometry_set */ | ||
455 | |||
456 | EAPI Eina_Bool | ||
457 | ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win, | ||
458 | int *x, | ||
459 | int *y, | ||
460 | int *w, | ||
461 | int *h) | ||
462 | { | ||
463 | int ret = 0; | ||
464 | unsigned int geom[4]; | ||
465 | |||
466 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
467 | ret = | ||
468 | ecore_x_window_prop_card32_get(win, | ||
469 | ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY, | ||
470 | geom, 4); | ||
471 | if (ret != 4) | ||
472 | return EINA_FALSE; | ||
473 | |||
474 | if (x) | ||
475 | *x = geom[0]; | ||
476 | |||
477 | if (y) | ||
478 | *y = geom[1]; | ||
479 | |||
480 | if (w) | ||
481 | *w = geom[2]; | ||
482 | |||
483 | if (h) | ||
484 | *h = geom[3]; | ||
485 | |||
486 | return EINA_TRUE; | ||
487 | } /* ecore_x_e_illume_indicator_geometry_get */ | ||
488 | |||
489 | EAPI void | ||
490 | ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win, | ||
491 | int x, | ||
492 | int y, | ||
493 | int w, | ||
494 | int h) | ||
495 | { | ||
496 | unsigned int geom[4]; | ||
497 | |||
498 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
499 | geom[0] = x; | ||
500 | geom[1] = y; | ||
501 | geom[2] = w; | ||
502 | geom[3] = h; | ||
503 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY, | ||
504 | geom, 4); | ||
505 | } /* ecore_x_e_illume_softkey_geometry_set */ | ||
506 | |||
507 | EAPI Eina_Bool | ||
508 | ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win, | ||
509 | int *x, | ||
510 | int *y, | ||
511 | int *w, | ||
512 | int *h) | ||
513 | { | ||
514 | int ret = 0; | ||
515 | unsigned int geom[4]; | ||
516 | |||
517 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
518 | ret = | ||
519 | ecore_x_window_prop_card32_get(win, | ||
520 | ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY, | ||
521 | geom, 4); | ||
522 | if (ret != 4) | ||
523 | return EINA_FALSE; | ||
524 | |||
525 | if (x) | ||
526 | *x = geom[0]; | ||
527 | |||
528 | if (y) | ||
529 | *y = geom[1]; | ||
530 | |||
531 | if (w) | ||
532 | *w = geom[2]; | ||
533 | |||
534 | if (h) | ||
535 | *h = geom[3]; | ||
536 | |||
537 | return EINA_TRUE; | ||
538 | } /* ecore_x_e_illume_softkey_geometry_get */ | ||
539 | |||
540 | EAPI void | ||
541 | ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win, | ||
542 | int x, | ||
543 | int y, | ||
544 | int w, | ||
545 | int h) | ||
546 | { | ||
547 | unsigned int geom[4]; | ||
548 | |||
549 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
550 | geom[0] = x; | ||
551 | geom[1] = y; | ||
552 | geom[2] = w; | ||
553 | geom[3] = h; | ||
554 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY, | ||
555 | geom, 4); | ||
556 | } /* ecore_x_e_illume_keyboard_geometry_set */ | ||
557 | |||
558 | EAPI Eina_Bool | ||
559 | ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win, | ||
560 | int *x, | ||
561 | int *y, | ||
562 | int *w, | ||
563 | int *h) | ||
564 | { | ||
565 | int ret = 0; | ||
566 | unsigned int geom[4]; | ||
567 | |||
568 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
569 | ret = | ||
570 | ecore_x_window_prop_card32_get(win, | ||
571 | ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY, | ||
572 | geom, 4); | ||
573 | if (ret != 4) | ||
574 | return EINA_FALSE; | ||
575 | |||
576 | if (x) | ||
577 | *x = geom[0]; | ||
578 | |||
579 | if (y) | ||
580 | *y = geom[1]; | ||
581 | |||
582 | if (w) | ||
583 | *w = geom[2]; | ||
584 | |||
585 | if (h) | ||
586 | *h = geom[3]; | ||
587 | |||
588 | return EINA_TRUE; | ||
589 | } /* ecore_x_e_illume_keyboard_geometry_get */ | ||
590 | |||
591 | static Ecore_X_Atom | ||
592 | _ecore_x_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state) | ||
593 | { | ||
594 | switch (state) | ||
595 | { | ||
596 | case ECORE_X_ILLUME_QUICKPANEL_STATE_ON: | ||
597 | return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON; | ||
598 | |||
599 | case ECORE_X_ILLUME_QUICKPANEL_STATE_OFF: | ||
600 | return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF; | ||
601 | |||
602 | default: | ||
603 | break; | ||
604 | } /* switch */ | ||
605 | return 0; | ||
606 | } /* _ecore_x_e_quickpanel_atom_get */ | ||
607 | |||
608 | static Ecore_X_Illume_Quickpanel_State | ||
609 | _ecore_x_e_quickpanel_state_get(Ecore_X_Atom atom) | ||
610 | { | ||
611 | if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) | ||
612 | return ECORE_X_ILLUME_QUICKPANEL_STATE_ON; | ||
613 | |||
614 | if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) | ||
615 | return ECORE_X_ILLUME_QUICKPANEL_STATE_OFF; | ||
616 | |||
617 | return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN; | ||
618 | } /* _ecore_x_e_quickpanel_state_get */ | ||
619 | |||
620 | EAPI void | ||
621 | ecore_x_e_illume_quickpanel_set(Ecore_X_Window win, | ||
622 | unsigned int is_quickpanel) | ||
623 | { | ||
624 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
625 | ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL, | ||
626 | &is_quickpanel, 1); | ||
627 | } /* ecore_x_e_illume_quickpanel_set */ | ||
628 | |||
629 | EAPI Eina_Bool | ||
630 | ecore_x_e_illume_quickpanel_get(Ecore_X_Window win) | ||
631 | { | ||
632 | unsigned int val = 0; | ||
633 | |||
634 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
635 | if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL, | ||
636 | &val, 1)) | ||
637 | return EINA_FALSE; | ||
638 | |||
639 | return val ? EINA_TRUE : EINA_FALSE; | ||
640 | } /* ecore_x_e_illume_quickpanel_get */ | ||
641 | |||
642 | EAPI void | ||
643 | ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win, | ||
644 | Ecore_X_Illume_Quickpanel_State state) | ||
645 | { | ||
646 | Ecore_X_Atom atom = 0; | ||
647 | |||
648 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
649 | atom = _ecore_x_e_quickpanel_atom_get(state); | ||
650 | ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE, | ||
651 | &atom, 1); | ||
652 | } /* ecore_x_e_illume_quickpanel_state_set */ | ||
653 | |||
654 | EAPI Ecore_X_Illume_Quickpanel_State | ||
655 | ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win) | ||
656 | { | ||
657 | Ecore_X_Atom atom; | ||
658 | |||
659 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
660 | if (!ecore_x_window_prop_atom_get(win, | ||
661 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE, | ||
662 | &atom, 1)) | ||
663 | return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN; | ||
664 | |||
665 | return _ecore_x_e_quickpanel_state_get(atom); | ||
666 | } /* ecore_x_e_illume_quickpanel_state_get */ | ||
667 | |||
668 | EAPI void | ||
669 | ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win, | ||
670 | Ecore_X_Illume_Quickpanel_State state) | ||
671 | { | ||
672 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
673 | ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE, | ||
674 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
675 | _ecore_x_e_quickpanel_atom_get(state), | ||
676 | 0, 0, 0, 0); | ||
677 | } /* ecore_x_e_illume_quickpanel_state_send */ | ||
678 | |||
679 | EAPI void | ||
680 | ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win) | ||
681 | { | ||
682 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
683 | ecore_x_client_message32_send(win, | ||
684 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE, | ||
685 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
686 | 0, 0, 0, 0, 0); | ||
687 | } /* ecore_x_e_illume_quickpanel_state_toggle */ | ||
688 | |||
689 | EAPI void | ||
690 | ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win, | ||
691 | unsigned int priority) | ||
692 | { | ||
693 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
694 | ecore_x_window_prop_card32_set(win, | ||
695 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR, | ||
696 | &priority, 1); | ||
697 | } /* ecore_x_e_illume_quickpanel_priority_major_set */ | ||
698 | |||
699 | EAPI int | ||
700 | ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win) | ||
701 | { | ||
702 | unsigned int val = 0; | ||
703 | |||
704 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
705 | if (!ecore_x_window_prop_card32_get(win, | ||
706 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR, | ||
707 | &val, 1)) | ||
708 | return 0; | ||
709 | |||
710 | return val; | ||
711 | } /* ecore_x_e_illume_quickpanel_priority_major_get */ | ||
712 | |||
713 | EAPI void | ||
714 | ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win, | ||
715 | unsigned int priority) | ||
716 | { | ||
717 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
718 | ecore_x_window_prop_card32_set(win, | ||
719 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR, | ||
720 | &priority, 1); | ||
721 | } /* ecore_x_e_illume_quickpanel_priority_minor_set */ | ||
722 | |||
723 | EAPI int | ||
724 | ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win) | ||
725 | { | ||
726 | unsigned int val = 0; | ||
727 | |||
728 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
729 | if (!ecore_x_window_prop_card32_get(win, | ||
730 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR, | ||
731 | &val, 1)) | ||
732 | return 0; | ||
733 | |||
734 | return val; | ||
735 | } /* ecore_x_e_illume_quickpanel_priority_minor_get */ | ||
736 | |||
737 | EAPI void | ||
738 | ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win, | ||
739 | unsigned int zone) | ||
740 | { | ||
741 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
742 | ecore_x_window_prop_card32_set(win, | ||
743 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE, | ||
744 | &zone, 1); | ||
745 | } /* ecore_x_e_illume_quickpanel_zone_set */ | ||
746 | |||
747 | EAPI int | ||
748 | ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win) | ||
749 | { | ||
750 | unsigned int val = 0; | ||
751 | |||
752 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
753 | if (!ecore_x_window_prop_card32_get(win, | ||
754 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE, | ||
755 | &val, 1)) | ||
756 | return 0; | ||
757 | |||
758 | return val; | ||
759 | } /* ecore_x_e_illume_quickpanel_zone_get */ | ||
760 | |||
761 | EAPI void | ||
762 | ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win) | ||
763 | { | ||
764 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
765 | ecore_x_client_message32_send(win, | ||
766 | ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE, | ||
767 | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, | ||
768 | 1, 0, 0, 0, 0); | ||
769 | } /* ecore_x_e_illume_quickpanel_position_update_send */ | ||
770 | |||
771 | EAPI void | ||
772 | ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, | ||
773 | Ecore_X_Sync_Counter counter) | ||
774 | { | ||
775 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
776 | if (counter) | ||
777 | ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER, | ||
778 | ECORE_X_ATOM_CARDINAL, &counter, 1); | ||
779 | else | ||
780 | ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER); | ||
781 | } /* ecore_x_e_comp_sync_counter_set */ | ||
782 | |||
783 | EAPI Ecore_X_Sync_Counter | ||
784 | ecore_x_e_comp_sync_counter_get(Ecore_X_Window win) | ||
785 | { | ||
786 | int ret = 0; | ||
787 | Ecore_X_Sync_Counter counter = 0; | ||
788 | |||
789 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
790 | ret = | ||
791 | ecore_x_window_prop_xid_get(win, | ||
792 | ECORE_X_ATOM_E_COMP_SYNC_COUNTER, | ||
793 | ECORE_X_ATOM_CARDINAL, | ||
794 | &counter, 1); | ||
795 | if (ret != 1) | ||
796 | return 0; | ||
797 | |||
798 | return counter; | ||
799 | } /* ecore_x_e_comp_sync_counter_get */ | ||
800 | |||
801 | EAPI void | ||
802 | ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, | ||
803 | Ecore_X_Window win) | ||
804 | { | ||
805 | XEvent xev; | ||
806 | |||
807 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
808 | if (!root) | ||
809 | root = DefaultRootWindow(_ecore_x_disp); | ||
810 | |||
811 | xev.xclient.type = ClientMessage; | ||
812 | xev.xclient.display = _ecore_x_disp; | ||
813 | xev.xclient.window = win; | ||
814 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE; | ||
815 | xev.xclient.format = 32; | ||
816 | xev.xclient.data.l[0] = win; | ||
817 | xev.xclient.data.l[1] = 0; // version | ||
818 | xev.xclient.data.l[2] = 0; // later | ||
819 | xev.xclient.data.l[3] = 0; // later | ||
820 | xev.xclient.data.l[4] = 0; // later | ||
821 | |||
822 | XSendEvent(_ecore_x_disp, root, False, | ||
823 | SubstructureRedirectMask | SubstructureNotifyMask, | ||
824 | &xev); | ||
825 | } /* ecore_x_e_comp_sync_draw_done_send */ | ||
826 | |||
827 | EAPI void | ||
828 | ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root, | ||
829 | Ecore_X_Window win, | ||
830 | int w, | ||
831 | int h) | ||
832 | { | ||
833 | XEvent xev; | ||
834 | |||
835 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
836 | if (!root) | ||
837 | root = DefaultRootWindow(_ecore_x_disp); | ||
838 | |||
839 | xev.xclient.type = ClientMessage; | ||
840 | xev.xclient.display = _ecore_x_disp; | ||
841 | xev.xclient.window = win; | ||
842 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE; | ||
843 | xev.xclient.format = 32; | ||
844 | xev.xclient.data.l[0] = win; | ||
845 | xev.xclient.data.l[1] = 1; // version | ||
846 | xev.xclient.data.l[2] = w; // win width at draw time | ||
847 | xev.xclient.data.l[3] = h; // win height at draw time | ||
848 | xev.xclient.data.l[4] = 0; // later | ||
849 | |||
850 | XSendEvent(_ecore_x_disp, root, False, | ||
851 | SubstructureRedirectMask | SubstructureNotifyMask, | ||
852 | &xev); | ||
853 | } /* ecore_x_e_comp_sync_draw_done_send */ | ||
854 | |||
855 | EAPI void | ||
856 | ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, | ||
857 | Eina_Bool enabled) | ||
858 | { | ||
859 | Ecore_X_Window win; | ||
860 | |||
861 | if (!root) | ||
862 | root = DefaultRootWindow(_ecore_x_disp); | ||
863 | |||
864 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
865 | if (enabled) | ||
866 | { | ||
867 | win = ecore_x_window_new(root, 1, 2, 3, 4); | ||
868 | ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED, | ||
869 | ECORE_X_ATOM_WINDOW, &win, 1); | ||
870 | ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED, | ||
871 | ECORE_X_ATOM_WINDOW, &win, 1); | ||
872 | } | ||
873 | else | ||
874 | { | ||
875 | int ret; | ||
876 | |||
877 | ret = | ||
878 | ecore_x_window_prop_xid_get(root, | ||
879 | ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED, | ||
880 | ECORE_X_ATOM_WINDOW, | ||
881 | &win, 1); | ||
882 | if ((ret == 1) && (win)) | ||
883 | { | ||
884 | ecore_x_window_prop_property_del( | ||
885 | root, | ||
886 | ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED); | ||
887 | ecore_x_window_free(win); | ||
888 | } | ||
889 | } | ||
890 | } /* ecore_x_e_comp_sync_supported_set */ | ||
891 | |||
892 | EAPI Eina_Bool | ||
893 | ecore_x_e_comp_sync_supported_get(Ecore_X_Window root) | ||
894 | { | ||
895 | Ecore_X_Window win, win2; | ||
896 | int ret; | ||
897 | |||
898 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
899 | if (!root) | ||
900 | root = DefaultRootWindow(_ecore_x_disp); | ||
901 | |||
902 | ret = | ||
903 | ecore_x_window_prop_xid_get(root, | ||
904 | ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED, | ||
905 | ECORE_X_ATOM_WINDOW, | ||
906 | &win, 1); | ||
907 | if ((ret == 1) && (win)) | ||
908 | { | ||
909 | ret = | ||
910 | ecore_x_window_prop_xid_get(win, | ||
911 | ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED, | ||
912 | ECORE_X_ATOM_WINDOW, | ||
913 | &win2, 1); | ||
914 | if ((ret == 1) && (win2 == win)) | ||
915 | return EINA_TRUE; | ||
916 | } | ||
917 | |||
918 | return EINA_FALSE; | ||
919 | } /* ecore_x_e_comp_sync_supported_get */ | ||
920 | |||
921 | EAPI void | ||
922 | ecore_x_e_comp_sync_begin_send(Ecore_X_Window win) | ||
923 | { | ||
924 | XEvent xev; | ||
925 | |||
926 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
927 | xev.xclient.type = ClientMessage; | ||
928 | xev.xclient.display = _ecore_x_disp; | ||
929 | xev.xclient.window = win; | ||
930 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN; | ||
931 | xev.xclient.format = 32; | ||
932 | xev.xclient.data.l[0] = win; | ||
933 | xev.xclient.data.l[1] = 0; // later | ||
934 | xev.xclient.data.l[2] = 0; // later | ||
935 | xev.xclient.data.l[3] = 0; // later | ||
936 | xev.xclient.data.l[4] = 0; // later | ||
937 | |||
938 | XSendEvent(_ecore_x_disp, win, False, | ||
939 | NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, | ||
940 | &xev); | ||
941 | } /* ecore_x_e_comp_sync_begin_send */ | ||
942 | |||
943 | EAPI void | ||
944 | ecore_x_e_comp_sync_end_send(Ecore_X_Window win) | ||
945 | { | ||
946 | XEvent xev; | ||
947 | |||
948 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
949 | xev.xclient.type = ClientMessage; | ||
950 | xev.xclient.display = _ecore_x_disp; | ||
951 | xev.xclient.window = win; | ||
952 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_END; | ||
953 | xev.xclient.format = 32; | ||
954 | xev.xclient.data.l[0] = win; | ||
955 | xev.xclient.data.l[1] = 0; // later | ||
956 | xev.xclient.data.l[2] = 0; // later | ||
957 | xev.xclient.data.l[3] = 0; // later | ||
958 | xev.xclient.data.l[4] = 0; // later | ||
959 | |||
960 | XSendEvent(_ecore_x_disp, win, False, | ||
961 | NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, | ||
962 | &xev); | ||
963 | } /* ecore_x_e_comp_sync_end_send */ | ||
964 | |||
965 | EAPI void | ||
966 | ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win) | ||
967 | { | ||
968 | XEvent xev; | ||
969 | |||
970 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
971 | xev.xclient.type = ClientMessage; | ||
972 | xev.xclient.display = _ecore_x_disp; | ||
973 | xev.xclient.window = win; | ||
974 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL; | ||
975 | xev.xclient.format = 32; | ||
976 | xev.xclient.data.l[0] = win; | ||
977 | xev.xclient.data.l[1] = 0; // later | ||
978 | xev.xclient.data.l[2] = 0; // later | ||
979 | xev.xclient.data.l[3] = 0; // later | ||
980 | xev.xclient.data.l[4] = 0; // later | ||
981 | |||
982 | XSendEvent(_ecore_x_disp, win, False, | ||
983 | NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, | ||
984 | &xev); | ||
985 | } /* ecore_x_e_comp_sync_cancel_send */ | ||
986 | |||
987 | EAPI void | ||
988 | ecore_x_e_comp_flush_send(Ecore_X_Window win) | ||
989 | { | ||
990 | XEvent xev; | ||
991 | |||
992 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
993 | xev.xclient.type = ClientMessage; | ||
994 | xev.xclient.display = _ecore_x_disp; | ||
995 | xev.xclient.window = win; | ||
996 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_FLUSH; | ||
997 | xev.xclient.format = 32; | ||
998 | xev.xclient.data.l[0] = win; | ||
999 | xev.xclient.data.l[1] = 0; // later | ||
1000 | xev.xclient.data.l[2] = 0; // later | ||
1001 | xev.xclient.data.l[3] = 0; // later | ||
1002 | xev.xclient.data.l[4] = 0; // later | ||
1003 | |||
1004 | XSendEvent(_ecore_x_disp, win, False, | ||
1005 | NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, | ||
1006 | &xev); | ||
1007 | } /* ecore_x_e_comp_flush_send */ | ||
1008 | |||
1009 | EAPI void | ||
1010 | ecore_x_e_comp_dump_send(Ecore_X_Window win) | ||
1011 | { | ||
1012 | XEvent xev; | ||
1013 | |||
1014 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
1015 | xev.xclient.type = ClientMessage; | ||
1016 | xev.xclient.display = _ecore_x_disp; | ||
1017 | xev.xclient.window = win; | ||
1018 | xev.xclient.message_type = ECORE_X_ATOM_E_COMP_DUMP; | ||
1019 | xev.xclient.format = 32; | ||
1020 | xev.xclient.data.l[0] = win; | ||
1021 | xev.xclient.data.l[1] = 0; // later | ||
1022 | xev.xclient.data.l[2] = 0; // later | ||
1023 | xev.xclient.data.l[3] = 0; // later | ||
1024 | xev.xclient.data.l[4] = 0; // later | ||
1025 | |||
1026 | XSendEvent(_ecore_x_disp, win, False, | ||
1027 | NoEventMask, //SubstructureRedirectMask | SubstructureNotifyMask, | ||
1028 | &xev); | ||
1029 | } /* ecore_x_e_comp_dump_send */ | ||
1030 | |||
1031 | EAPI void | ||
1032 | ecore_x_e_comp_pixmap_set(Ecore_X_Window win, | ||
1033 | Ecore_X_Pixmap pixmap) | ||
1034 | { | ||
1035 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
1036 | if (pixmap) | ||
1037 | ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_PIXMAP, | ||
1038 | ECORE_X_ATOM_PIXMAP, &pixmap, 1); | ||
1039 | else | ||
1040 | ecore_x_window_prop_property_del(win, pixmap); | ||
1041 | } /* ecore_x_e_comp_pixmap_set */ | ||
1042 | |||
1043 | EAPI Ecore_X_Pixmap | ||
1044 | ecore_x_e_comp_pixmap_get(Ecore_X_Window win) | ||
1045 | { | ||
1046 | int ret = 0; | ||
1047 | Ecore_X_Pixmap pixmap = 0; | ||
1048 | |||
1049 | LOGFN(__FILE__, __LINE__, __FUNCTION__); | ||
1050 | ret = | ||
1051 | ecore_x_window_prop_xid_get(win, | ||
1052 | ECORE_X_ATOM_E_COMP_PIXMAP, | ||
1053 | ECORE_X_ATOM_PIXMAP, | ||
1054 | &pixmap, 1); | ||
1055 | if (ret != 1) | ||
1056 | return 0; | ||
1057 | |||
1058 | return pixmap; | ||
1059 | } /* ecore_x_e_comp_pixmap_get */ | ||
1060 | |||