Add ecore_x_mouse_in_send() and ecore_x_mouse_out_send()
[framework/uifw/ecore.git] / src / lib / ecore_x / xcb / ecore_xcb_atoms.c
1 #include "ecore_xcb_private.h"
2 #include "ecore_x_atoms_decl.h"
3
4 /* NB: Increment if you add new atoms */
5 #define ECORE_X_ATOMS_COUNT 199
6
7 typedef struct _Xcb_Atom Xcb_Atom;
8 struct _Xcb_Atom
9 {
10    const char   *name;
11    Ecore_X_Atom *atom;
12 };
13
14 /* local function prototypes */
15
16 /* local variables */
17 static xcb_intern_atom_cookie_t cookies[ECORE_X_ATOMS_COUNT];
18 static Xcb_Atom atoms[] =
19 {
20    { "ATOM", &ECORE_X_ATOM_ATOM },
21    { "CARDINAL", &ECORE_X_ATOM_CARDINAL },
22    { "COMPOUND_TEXT", &ECORE_X_ATOM_COMPOUND_TEXT },
23    { "FILE_NAME", &ECORE_X_ATOM_FILE_NAME },
24    { "STRING", &ECORE_X_ATOM_STRING },
25    { "TEXT", &ECORE_X_ATOM_TEXT },
26    { "UTF8_STRING", &ECORE_X_ATOM_UTF8_STRING },
27    { "WINDOW", &ECORE_X_ATOM_WINDOW },
28    { "PIXMAP", &ECORE_X_ATOM_PIXMAP },
29    { "VISUALID", &ECORE_X_ATOM_VISUALID },
30
31    { "JXSelectionWindowProperty", &ECORE_X_ATOM_SELECTION_PROP_XDND },
32    { "XdndSelection", &ECORE_X_ATOM_SELECTION_XDND },
33    { "XdndAware", &ECORE_X_ATOM_XDND_AWARE },
34    { "XdndEnter", &ECORE_X_ATOM_XDND_ENTER },
35    { "XdndTypeList", &ECORE_X_ATOM_XDND_TYPE_LIST },
36    { "XdndPosition", &ECORE_X_ATOM_XDND_POSITION },
37    { "XdndActionCopy", &ECORE_X_ATOM_XDND_ACTION_COPY },
38    { "XdndActionMove", &ECORE_X_ATOM_XDND_ACTION_MOVE },
39    { "XdndActionPrivate", &ECORE_X_ATOM_XDND_ACTION_PRIVATE },
40    { "XdndActionAsk", &ECORE_X_ATOM_XDND_ACTION_ASK },
41    { "XdndActionList", &ECORE_X_ATOM_XDND_ACTION_LIST },
42    { "XdndActionLink", &ECORE_X_ATOM_XDND_ACTION_LINK },
43    { "XdndActionDescription", &ECORE_X_ATOM_XDND_ACTION_DESCRIPTION },
44    { "XdndProxy", &ECORE_X_ATOM_XDND_PROXY },
45    { "XdndStatus", &ECORE_X_ATOM_XDND_STATUS },
46    { "XdndLeave", &ECORE_X_ATOM_XDND_LEAVE },
47    { "XdndDrop", &ECORE_X_ATOM_XDND_DROP },
48    { "XdndFinished", &ECORE_X_ATOM_XDND_FINISHED },
49
50    { "XdndActionCopy", &ECORE_X_DND_ACTION_COPY },
51    { "XdndActionMove", &ECORE_X_DND_ACTION_MOVE },
52    { "XdndActionLink", &ECORE_X_DND_ACTION_LINK },
53    { "XdndActionAsk", &ECORE_X_DND_ACTION_ASK },
54    { "XdndActionPrivate", &ECORE_X_DND_ACTION_PRIVATE },
55
56    { "_E_FRAME_SIZE", &ECORE_X_ATOM_E_FRAME_SIZE },
57
58    { "_WIN_LAYER", &ECORE_X_ATOM_WIN_LAYER },
59
60    { "WM_NAME", &ECORE_X_ATOM_WM_NAME },
61    { "WM_ICON_NAME", &ECORE_X_ATOM_WM_ICON_NAME },
62    { "WM_NORMAL_HINTS", &ECORE_X_ATOM_WM_NORMAL_HINTS },
63    { "WM_SIZE_HINTS", &ECORE_X_ATOM_WM_SIZE_HINTS },
64    { "WM_HINTS", &ECORE_X_ATOM_WM_HINTS },
65    { "WM_CLASS", &ECORE_X_ATOM_WM_CLASS },
66    { "WM_TRANSIENT_FOR", &ECORE_X_ATOM_WM_TRANSIENT_FOR },
67    { "WM_PROTOCOLS", &ECORE_X_ATOM_WM_PROTOCOLS },
68    { "WM_COLORMAP_WINDOWS", &ECORE_X_ATOM_WM_COLORMAP_WINDOWS },
69    { "WM_COMMAND", &ECORE_X_ATOM_WM_COMMAND },
70    { "WM_CLIENT_MACHINE", &ECORE_X_ATOM_WM_CLIENT_MACHINE },
71
72    { "WM_STATE", &ECORE_X_ATOM_WM_STATE },
73    { "WM_ICON_SIZE", &ECORE_X_ATOM_WM_ICON_SIZE },
74
75    { "WM_CHANGE_STATE", &ECORE_X_ATOM_WM_CHANGE_STATE },
76
77    { "WM_TAKE_FOCUS", &ECORE_X_ATOM_WM_TAKE_FOCUS },
78    { "WM_SAVE_YOURSELF", &ECORE_X_ATOM_WM_SAVE_YOURSELF },
79    { "WM_DELETE_WINDOW", &ECORE_X_ATOM_WM_DELETE_WINDOW },
80
81    { "WM_COLORMAP_NOTIFY", &ECORE_X_ATOM_WM_COLORMAP_NOTIFY },
82
83    { "SM_CLIENT_ID", &ECORE_X_ATOM_SM_CLIENT_ID },
84    { "WM_CLIENT_LEADER", &ECORE_X_ATOM_WM_CLIENT_LEADER },
85    { "WM_WINDOW_ROLE", &ECORE_X_ATOM_WM_WINDOW_ROLE },
86
87    { "_MOTIF_WM_HINTS", &ECORE_X_ATOM_MOTIF_WM_HINTS },
88
89    { "_NET_SUPPORTED", &ECORE_X_ATOM_NET_SUPPORTED },
90    { "_NET_CLIENT_LIST", &ECORE_X_ATOM_NET_CLIENT_LIST },
91    { "_NET_CLIENT_LIST_STACKING", &ECORE_X_ATOM_NET_CLIENT_LIST_STACKING },
92    { "_NET_NUMBER_OF_DESKTOPS", &ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS },
93    { "_NET_DESKTOP_GEOMETRY", &ECORE_X_ATOM_NET_DESKTOP_GEOMETRY },
94    { "_NET_DESKTOP_VIEWPORT", &ECORE_X_ATOM_NET_DESKTOP_VIEWPORT },
95    { "_NET_CURRENT_DESKTOP", &ECORE_X_ATOM_NET_CURRENT_DESKTOP },
96    { "_NET_DESKTOP_NAMES", &ECORE_X_ATOM_NET_DESKTOP_NAMES },
97    { "_NET_ACTIVE_WINDOW", &ECORE_X_ATOM_NET_ACTIVE_WINDOW },
98    { "_NET_WORKAREA", &ECORE_X_ATOM_NET_WORKAREA },
99    { "_NET_SUPPORTING_WM_CHECK", &ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK },
100    { "_NET_VIRTUAL_ROOTS", &ECORE_X_ATOM_NET_VIRTUAL_ROOTS },
101    { "_NET_DESKTOP_LAYOUT", &ECORE_X_ATOM_NET_DESKTOP_LAYOUT },
102    { "_NET_SHOWING_DESKTOP", &ECORE_X_ATOM_NET_SHOWING_DESKTOP },
103
104    { "_NET_CLOSE_WINDOW", &ECORE_X_ATOM_NET_CLOSE_WINDOW },
105    { "_NET_MOVERESIZE_WINDOW", &ECORE_X_ATOM_NET_MOVERESIZE_WINDOW },
106    { "_NET_WM_MOVERESIZE", &ECORE_X_ATOM_NET_WM_MOVERESIZE },
107    { "_NET_RESTACK_WINDOW", &ECORE_X_ATOM_NET_RESTACK_WINDOW },
108
109    { "_NET_REQUEST_FRAME_EXTENTS", &ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS },
110
111    { "_NET_WM_NAME", &ECORE_X_ATOM_NET_WM_NAME },
112    { "_NET_WM_VISIBLE_NAME", &ECORE_X_ATOM_NET_WM_VISIBLE_NAME },
113    { "_NET_WM_ICON_NAME", &ECORE_X_ATOM_NET_WM_ICON_NAME },
114    { "_NET_WM_VISIBLE_ICON_NAME", &ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME },
115    { "_NET_WM_DESKTOP", &ECORE_X_ATOM_NET_WM_DESKTOP },
116
117    { "_NET_WM_WINDOW_TYPE", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE },
118    { "_NET_WM_WINDOW_TYPE_DESKTOP", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP },
119    { "_NET_WM_WINDOW_TYPE_DOCK", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK },
120    { "_NET_WM_WINDOW_TYPE_TOOLBAR", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR },
121    { "_NET_WM_WINDOW_TYPE_MENU", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU },
122    { "_NET_WM_WINDOW_TYPE_UTILITY", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY },
123    { "_NET_WM_WINDOW_TYPE_SPLASH", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH },
124    { "_NET_WM_WINDOW_TYPE_DIALOG", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG },
125    { "_NET_WM_WINDOW_TYPE_NORMAL", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL },
126    { "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU",
127      &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DROPDOWN_MENU },
128    { "_NET_WM_WINDOW_TYPE_POPUP_MENU",
129      &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_POPUP_MENU },
130    { "_NET_WM_WINDOW_TYPE_TOOLTIP", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLTIP },
131    { "_NET_WM_WINDOW_TYPE_NOTIFICATION",
132      &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NOTIFICATION },
133    { "_NET_WM_WINDOW_TYPE_COMBO", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_COMBO },
134    { "_NET_WM_WINDOW_TYPE_DND", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DND },
135
136    { "_NET_WM_STATE", &ECORE_X_ATOM_NET_WM_STATE },
137    { "_NET_WM_STATE_MODAL", &ECORE_X_ATOM_NET_WM_STATE_MODAL },
138    { "_NET_WM_STATE_STICKY", &ECORE_X_ATOM_NET_WM_STATE_STICKY },
139    { "_NET_WM_STATE_MAXIMIZED_VERT",
140      &ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT },
141    { "_NET_WM_STATE_MAXIMIZED_HORZ",
142      &ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ },
143    { "_NET_WM_STATE_SHADED", &ECORE_X_ATOM_NET_WM_STATE_SHADED },
144    { "_NET_WM_STATE_SKIP_TASKBAR", &ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR },
145    { "_NET_WM_STATE_SKIP_PAGER", &ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER },
146    { "_NET_WM_STATE_HIDDEN", &ECORE_X_ATOM_NET_WM_STATE_HIDDEN },
147    { "_NET_WM_STATE_FULLSCREEN", &ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN },
148    { "_NET_WM_STATE_ABOVE", &ECORE_X_ATOM_NET_WM_STATE_ABOVE },
149    { "_NET_WM_STATE_BELOW", &ECORE_X_ATOM_NET_WM_STATE_BELOW },
150    { "_NET_WM_STATE_DEMANDS_ATTENTION",
151      &ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION },
152
153    { "_NET_WM_ALLOWED_ACTIONS", &ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS },
154    { "_NET_WM_ACTION_MOVE", &ECORE_X_ATOM_NET_WM_ACTION_MOVE },
155    { "_NET_WM_ACTION_RESIZE", &ECORE_X_ATOM_NET_WM_ACTION_RESIZE },
156    { "_NET_WM_ACTION_MINIMIZE", &ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE },
157    { "_NET_WM_ACTION_SHADE", &ECORE_X_ATOM_NET_WM_ACTION_SHADE },
158    { "_NET_WM_ACTION_STICK", &ECORE_X_ATOM_NET_WM_ACTION_STICK },
159    { "_NET_WM_ACTION_MAXIMIZE_HORZ",
160      &ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ },
161    { "_NET_WM_ACTION_MAXIMIZE_VERT",
162      &ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT },
163    { "_NET_WM_ACTION_FULLSCREEN", &ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN },
164    { "_NET_WM_ACTION_CHANGE_DESKTOP",
165      &ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP },
166    { "_NET_WM_ACTION_CLOSE", &ECORE_X_ATOM_NET_WM_ACTION_CLOSE },
167    { "_NET_WM_ACTION_ABOVE", &ECORE_X_ATOM_NET_WM_ACTION_ABOVE },
168    { "_NET_WM_ACTION_BELOW", &ECORE_X_ATOM_NET_WM_ACTION_BELOW },
169
170    { "_NET_WM_STRUT", &ECORE_X_ATOM_NET_WM_STRUT },
171    { "_NET_WM_STRUT_PARTIAL", &ECORE_X_ATOM_NET_WM_STRUT_PARTIAL },
172    { "_NET_WM_ICON_GEOMETRY", &ECORE_X_ATOM_NET_WM_ICON_GEOMETRY },
173    { "_NET_WM_ICON", &ECORE_X_ATOM_NET_WM_ICON },
174    { "_NET_WM_PID", &ECORE_X_ATOM_NET_WM_PID },
175    { "_NET_WM_HANDLED_ICONS", &ECORE_X_ATOM_NET_WM_HANDLED_ICONS },
176    { "_NET_WM_USER_TIME", &ECORE_X_ATOM_NET_WM_USER_TIME },
177    { "_NET_STARTUP_ID", &ECORE_X_ATOM_NET_STARTUP_ID },
178    { "_NET_FRAME_EXTENTS", &ECORE_X_ATOM_NET_FRAME_EXTENTS },
179
180    { "_NET_WM_PING", &ECORE_X_ATOM_NET_WM_PING },
181    { "_NET_WM_SYNC_REQUEST", &ECORE_X_ATOM_NET_WM_SYNC_REQUEST },
182    { "_NET_WM_SYNC_REQUEST_COUNTER",
183      &ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER },
184
185    { "_NET_WM_WINDOW_OPACITY", &ECORE_X_ATOM_NET_WM_WINDOW_OPACITY },
186    { "_NET_WM_WINDOW_SHADOW", &ECORE_X_ATOM_NET_WM_WINDOW_SHADOW },
187    { "_NET_WM_WINDOW_SHADE", &ECORE_X_ATOM_NET_WM_WINDOW_SHADE },
188
189    { "TARGETS", &ECORE_X_ATOM_SELECTION_TARGETS },
190    { "CLIPBOARD", &ECORE_X_ATOM_SELECTION_CLIPBOARD },
191    { "PRIMARY", &ECORE_X_ATOM_SELECTION_PRIMARY },
192    { "SECONDARY", &ECORE_X_ATOM_SELECTION_SECONDARY },
193    { "_ECORE_SELECTION_PRIMARY", &ECORE_X_ATOM_SELECTION_PROP_PRIMARY },
194    { "_ECORE_SELECTION_SECONDARY", &ECORE_X_ATOM_SELECTION_PROP_SECONDARY },
195    { "_ECORE_SELECTION_CLIPBOARD", &ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD },
196
197    { "_E_VIRTUAL_KEYBOARD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD },
198    { "_E_VIRTUAL_KEYBOARD_STATE", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE },
199    { "_E_VIRTUAL_KEYBOARD_ON", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON },
200    { "_E_VIRTUAL_KEYBOARD_OFF", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF },
201    { "_E_VIRTUAL_KEYBOARD_ALPHA", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA },
202    { "_E_VIRTUAL_KEYBOARD_NUMERIC", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC },
203    { "_E_VIRTUAL_KEYBOARD_PIN", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN },
204    { "_E_VIRTUAL_KEYBOARD_PHONE_NUMBER",
205      &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER },
206    { "_E_VIRTUAL_KEYBOARD_HEX", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX },
207    { "_E_VIRTUAL_KEYBOARD_TERMINAL",
208      &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL },
209    { "_E_VIRTUAL_KEYBOARD_PASSWORD",
210      &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD },
211    { "_E_VIRTUAL_KEYBOARD_IP", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP },
212    { "_E_VIRTUAL_KEYBOARD_HOST", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST },
213    { "_E_VIRTUAL_KEYBOARD_FILE", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE },
214    { "_E_VIRTUAL_KEYBOARD_URL", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL },
215    { "_E_VIRTUAL_KEYBOARD_KEYPAD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD },
216    { "_E_VIRTUAL_KEYBOARD_J2ME", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME },
217
218    { "_E_ILLUME_ZONE", &ECORE_X_ATOM_E_ILLUME_ZONE },
219    { "_E_ILLUME_ZONE_LIST", &ECORE_X_ATOM_E_ILLUME_ZONE_LIST },
220    { "_E_ILLUME_CONFORMANT", &ECORE_X_ATOM_E_ILLUME_CONFORMANT },
221    { "_E_ILLUME_MODE", &ECORE_X_ATOM_E_ILLUME_MODE },
222    { "_E_ILLUME_MODE_SINGLE", &ECORE_X_ATOM_E_ILLUME_MODE_SINGLE },
223    { "_E_ILLUME_MODE_DUAL_TOP", &ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP },
224    { "_E_ILLUME_MODE_DUAL_LEFT", &ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT },
225    { "_E_ILLUME_FOCUS_BACK", &ECORE_X_ATOM_E_ILLUME_FOCUS_BACK },
226    { "_E_ILLUME_FOCUS_FORWARD", &ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD },
227    { "_E_ILLUME_FOCUS_HOME", &ECORE_X_ATOM_E_ILLUME_FOCUS_HOME },
228    { "_E_ILLUME_CLOSE", &ECORE_X_ATOM_E_ILLUME_CLOSE },
229    { "_E_ILLUME_HOME_NEW", &ECORE_X_ATOM_E_ILLUME_HOME_NEW },
230    { "_E_ILLUME_HOME_DEL", &ECORE_X_ATOM_E_ILLUME_HOME_DEL },
231    { "_E_ILLUME_DRAG", &ECORE_X_ATOM_E_ILLUME_DRAG },
232    { "_E_ILLUME_DRAG_LOCKED", &ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED },
233    { "_E_ILLUME_DRAG_START", &ECORE_X_ATOM_E_ILLUME_DRAG_START },
234    { "_E_ILLUME_DRAG_END", &ECORE_X_ATOM_E_ILLUME_DRAG_END },
235    { "_E_ILLUME_INDICATOR_GEOMETRY",
236      &ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY },
237    { "_E_ILLUME_SOFTKEY_GEOMETRY", &ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY },
238    { "_E_ILLUME_KEYBOARD_GEOMETRY", &ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY },
239    { "_E_ILLUME_QUICKPANEL", &ECORE_X_ATOM_E_ILLUME_QUICKPANEL },
240    { "_E_ILLUME_QUICKPANEL_STATE", &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE },
241    { "_E_ILLUME_QUICKPANEL_STATE_TOGGLE",
242      &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE },
243    { "_E_ILLUME_QUICKPANEL_ON", &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON },
244    { "_E_ILLUME_QUICKPANEL_OFF", &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF },
245    { "_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR",
246      &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR },
247    { "_E_ILLUME_QUICKPANEL_PRIORITY_MINOR",
248      &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR },
249    { "_E_ILLUME_QUICKPANEL_ZONE", &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE },
250    { "_E_ILLUME_QUICKPANEL_POSITION_UPDATE",
251      &ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE },
252    { "_E_ILLUME_INDICATOR_STATE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE },
253    { "_E_ILLUME_INDICATOR_ON", &ECORE_X_ATOM_E_ILLUME_INDICATOR_ON },
254    { "_E_ILLUME_INDICATOR_OFF", &ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF },
255    { "_E_ILLUME_INDICATOR_OPACITY_MODE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE },
256    { "_E_ILLUME_INDICATOR_OPAQUE", &ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE },
257    { "_E_ILLUME_INDICATOR_TRANSLUCENT", &ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT },
258    { "_E_ILLUME_INDICATOR_TRANSPARENT", &ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT },
259    { "_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLES", &ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_AVAILABLE_ANGLE },
260    { "_E_ILLUME_ROTATE_WINDOW_ANGLE", &ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE },
261    { "_E_ILLUME_ROTATE_ROOT_ANGLE", &ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE },
262    { "_E_ILLUME_CLIPBOARD_STATE", &ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE },
263    { "_E_ILLUME_CLIPBOARD_ON", &ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON },
264    { "_E_ILLUME_CLIPBOARD_OFF", &ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF },
265    { "_E_ILLUME_CLIPBOARD_GEOMETRY", &ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY },
266    { "_E_ILLUME_ACCESS_CONTROL", &ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL },
267    { "_E_ILLUME_ACCESS_ACTION_NEXT", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT },
268    { "_E_ILLUME_ACCESS_ACTION_PREV", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_PREV },
269    { "_E_ILLUME_ACCESS_ACTION_ACTIVATE", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ACTIVATE },
270    { "_E_ILLUME_ACCESS_ACTION_READ", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ },
271    { "_E_ILLUME_ACCESS_ACTION_READ_NEXT", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_NEXT },
272    { "_E_ILLUME_ACCESS_ACTION_READ_PREV", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_PREV },
273    { "_E_COMP_SYNC_COUNTER", &ECORE_X_ATOM_E_COMP_SYNC_COUNTER },
274    { "_E_COMP_SYNC_DRAW_DONE", &ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE },
275    { "_E_COMP_SYNC_SUPPORTED", &ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED },
276    { "_E_COMP_SYNC_BEGIN", &ECORE_X_ATOM_E_COMP_SYNC_BEGIN },
277    { "_E_COMP_SYNC_END", &ECORE_X_ATOM_E_COMP_SYNC_END },
278    { "_E_COMP_SYNC_CANCEL", &ECORE_X_ATOM_E_COMP_SYNC_CANCEL },
279
280    { "_E_COMP_FLUSH", &ECORE_X_ATOM_E_COMP_FLUSH },
281    { "_E_COMP_DUMP", &ECORE_X_ATOM_E_COMP_DUMP },
282    { "_E_COMP_PIXMAP", &ECORE_X_ATOM_E_COMP_PIXMAP },
283    { "_E_VIDEO_PARENT", &ECORE_X_ATOM_E_VIDEO_PARENT },
284    { "_E_VIDEO_POSITION", &ECORE_X_ATOM_E_VIDEO_POSITION }
285 };
286
287 void
288 _ecore_xcb_atoms_init(void)
289 {
290    int i = 0, num = 0;
291
292    LOGFN(__FILE__, __LINE__, __FUNCTION__);
293    CHECK_XCB_CONN;
294
295    num = (sizeof(atoms) / sizeof(Xcb_Atom));
296    for (i = 0; i < num; i++)
297      {
298         cookies[i] =
299           xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
300                                     strlen(atoms[i].name), atoms[i].name);
301      }
302 }
303
304 void
305 _ecore_xcb_atoms_finalize(void)
306 {
307    int i = 0, num = 0;
308
309    LOGFN(__FILE__, __LINE__, __FUNCTION__);
310    CHECK_XCB_CONN;
311
312    num = (sizeof(atoms) / sizeof(Xcb_Atom));
313    for (i = 0; i < num; i++)
314      {
315         xcb_intern_atom_reply_t *reply = NULL;
316
317         if (!(reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], 0)))
318           continue;
319         *(atoms[i].atom) = reply->atom;
320         free(reply);
321      }
322 }
323
324 /**
325  * @defgroup Ecore_X_Atom_Group XCB Atom Functions
326  *
327  * Functions that operate on atoms
328  */
329
330 /**
331  * Retrieves the atom value associated to a name.
332  *
333  * @param  name Unused.
334  * @return      Associated atom value.
335  *
336  * Retrieves the atom value associated to a name. The reply is the
337  * returned value of the function ecore_xcb_intern_atom_reply(). If
338  * @p reply is @c NULL, the NULL atom is returned. Otherwise, the atom
339  * associated to the name is returned.
340  *
341  * To use this function, you must call before, and in order,
342  * ecore_x_atom_get_prefetch(), which sends the InternAtom request,
343  * then ecore_x_atom_get_fetch(), which gets the reply.
344  *
345  * @ingroup Ecore_X_Atom_Group
346  */
347 EAPI Ecore_X_Atom
348 ecore_x_atom_get(const char *name)
349 {
350    xcb_intern_atom_cookie_t cookie;
351    xcb_intern_atom_reply_t *reply;
352    Ecore_X_Atom a;
353
354    LOGFN(__FILE__, __LINE__, __FUNCTION__);
355    CHECK_XCB_CONN;
356
357    cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(name), name);
358    reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
359    if (!reply) return XCB_ATOM_NONE;
360    a = reply->atom;
361    free(reply);
362    return a;
363 }
364
365 /**
366  * Retrieves the name of the given atom.
367  *
368  * @param  atom
369  * @return      The name of the atom.
370  *
371  * @ingroup Ecore_X_Atom_Group
372  */
373 EAPI char *
374 ecore_x_atom_name_get(Ecore_X_Atom atom)
375 {
376    xcb_get_atom_name_cookie_t cookie;
377    xcb_get_atom_name_reply_t *reply;
378    char *name;
379    int len = 0;
380
381    LOGFN(__FILE__, __LINE__, __FUNCTION__);
382    CHECK_XCB_CONN;
383
384    cookie = xcb_get_atom_name_unchecked(_ecore_xcb_conn, atom);
385    reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookie, NULL);
386    if (!reply) return NULL;
387    len = xcb_get_atom_name_name_length(reply);
388    name = (char *)malloc(sizeof(char) * (len + 1));
389    if (!name)
390      {
391         free(reply);
392         return NULL;
393      }
394    memcpy(name, xcb_get_atom_name_name(reply), len);
395    name[len] = '\0';
396
397    free(reply);
398    return name;
399 }
400
401 EAPI void
402 ecore_x_atoms_get(const char  **names,
403                   int           num,
404                   Ecore_X_Atom *atoms)
405 {
406    xcb_intern_atom_cookie_t cookies[num];
407    int i = 0;
408
409    LOGFN(__FILE__, __LINE__, __FUNCTION__);
410    CHECK_XCB_CONN;
411
412    for (i = 0; i < num; i++)
413      {
414         cookies[i] =
415           xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
416                                     strlen(names[i]), names[i]);
417      }
418    for (i = 0; i < num; i++)
419      {
420         xcb_intern_atom_reply_t *reply = NULL;
421
422         if (!(reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], 0)))
423           continue;
424         atoms[i] = reply->atom;
425         free(reply);
426      }
427 }
428