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