2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
7 #include "ecore_xcb_private.h"
11 * @defgroup Ecore_X_Atom_Group XCB Atom Functions
13 * Functions that operate on atoms.
20 #include "ecore_x_atoms_decl.h"
22 /* To avoid round trips, the initialization is separated in 2
23 functions: _ecore_xcb_atom_init and
24 _ecore_xcb_atom_init_finalize. The first one gets the cookies and
25 the second one gets the replies and set the atoms. */
27 #define FETCH_ATOM(s) \
28 atom_cookies[i] = xcb_intern_atom(_ecore_xcb_conn, 0, strlen(s), s); \
31 #define FETCH_ATOM_FINALIZE(x) \
32 reply = xcb_intern_atom_reply(_ecore_xcb_conn, atom_cookies[i], NULL); \
38 _ecore_x_atom_init(xcb_intern_atom_cookie_t *atom_cookies)
43 FETCH_ATOM("COMPOUND_TEXT");
44 FETCH_ATOM("FILE_NAME");
46 FETCH_ATOM("UTF8_STRING");
49 FETCH_ATOM("JXSelectionWindowProperty");
50 FETCH_ATOM("XdndSelection");
51 FETCH_ATOM("XdndAware");
52 FETCH_ATOM("XdndEnter");
53 FETCH_ATOM("XdndTypeList");
54 FETCH_ATOM("XdndPosition");
55 FETCH_ATOM("XdndActionCopy");
56 FETCH_ATOM("XdndActionMove");
57 FETCH_ATOM("XdndActionPrivate");
58 FETCH_ATOM("XdndActionAsk");
59 FETCH_ATOM("XdndActionList");
60 FETCH_ATOM("XdndActionLink");
61 FETCH_ATOM("XdndActionDescription");
62 FETCH_ATOM("XdndProxy");
63 FETCH_ATOM("XdndStatus");
64 FETCH_ATOM("XdndLeave");
65 FETCH_ATOM("XdndDrop");
66 FETCH_ATOM("XdndFinished");
69 FETCH_ATOM("_E_FRAME_SIZE");
72 FETCH_ATOM("_WIN_LAYER");
75 FETCH_ATOM("WM_PROTOCOLS");
76 FETCH_ATOM("WM_COLORMAP_WINDOWS");
78 FETCH_ATOM("WM_STATE");
80 FETCH_ATOM("WM_CHANGE_STATE");
82 FETCH_ATOM("WM_TAKE_FOCUS");
83 FETCH_ATOM("WM_SAVE_YOURSELF");
84 FETCH_ATOM("WM_DELETE_WINDOW");
86 FETCH_ATOM("WM_COLORMAP_NOTIFY");
88 FETCH_ATOM("SM_CLIENT_ID");
89 FETCH_ATOM("WM_CLIENT_LEADER");
90 FETCH_ATOM("WM_WINDOW_ROLE");
93 FETCH_ATOM("_MOTIF_WM_HINTS");
96 FETCH_ATOM("_NET_SUPPORTED");
97 FETCH_ATOM("_NET_CLIENT_LIST");
98 FETCH_ATOM("_NET_CLIENT_LIST_STACKING");
99 FETCH_ATOM("_NET_NUMBER_OF_DESKTOPS");
100 FETCH_ATOM("_NET_DESKTOP_GEOMETRY");
101 FETCH_ATOM("_NET_DESKTOP_VIEWPORT");
102 FETCH_ATOM("_NET_CURRENT_DESKTOP");
103 FETCH_ATOM("_NET_DESKTOP_NAMES");
104 FETCH_ATOM("_NET_ACTIVE_WINDOW");
105 FETCH_ATOM("_NET_WORKAREA");
106 FETCH_ATOM("_NET_SUPPORTING_WM_CHECK");
107 FETCH_ATOM("_NET_VIRTUAL_ROOTS");
108 FETCH_ATOM("_NET_DESKTOP_LAYOUT");
109 FETCH_ATOM("_NET_SHOWING_DESKTOP");
111 FETCH_ATOM("_NET_CLOSE_WINDOW");
112 FETCH_ATOM("_NET_MOVERESIZE_WINDOW");
113 FETCH_ATOM("_NET_WM_MOVERESIZE");
114 FETCH_ATOM("_NET_RESTACK_WINDOW");
115 FETCH_ATOM("_NET_REQUEST_FRAME_EXTENTS");
117 FETCH_ATOM("_NET_WM_NAME");
118 FETCH_ATOM("_NET_WM_VISIBLE_NAME");
119 FETCH_ATOM("_NET_WM_ICON_NAME");
120 FETCH_ATOM("_NET_WM_VISIBLE_ICON_NAME");
121 FETCH_ATOM("_NET_WM_DESKTOP");
123 FETCH_ATOM("_NET_WM_WINDOW_TYPE");
124 FETCH_ATOM("_NET_WM_WINDOW_TYPE_DESKTOP");
125 FETCH_ATOM("_NET_WM_WINDOW_TYPE_DOCK");
126 FETCH_ATOM("_NET_WM_WINDOW_TYPE_TOOLBAR");
127 FETCH_ATOM("_NET_WM_WINDOW_TYPE_MENU");
128 FETCH_ATOM("_NET_WM_WINDOW_TYPE_UTILITY");
129 FETCH_ATOM("_NET_WM_WINDOW_TYPE_SPLASH");
130 FETCH_ATOM("_NET_WM_WINDOW_TYPE_DIALOG");
131 FETCH_ATOM("_NET_WM_WINDOW_TYPE_NORMAL");
133 FETCH_ATOM("_NET_WM_STATE");
134 FETCH_ATOM("_NET_WM_STATE_MODAL");
135 FETCH_ATOM("_NET_WM_STATE_STICKY");
136 FETCH_ATOM("_NET_WM_STATE_MAXIMIZED_VERT");
137 FETCH_ATOM("_NET_WM_STATE_MAXIMIZED_HORZ");
138 FETCH_ATOM("_NET_WM_STATE_SHADED");
139 FETCH_ATOM("_NET_WM_STATE_SKIP_TASKBAR");
140 FETCH_ATOM("_NET_WM_STATE_SKIP_PAGER");
141 FETCH_ATOM("_NET_WM_STATE_HIDDEN");
142 FETCH_ATOM("_NET_WM_STATE_FULLSCREEN");
143 FETCH_ATOM("_NET_WM_STATE_ABOVE");
144 FETCH_ATOM("_NET_WM_STATE_BELOW");
145 FETCH_ATOM("_NET_WM_STATE_DEMANDS_ATTENTION");
147 FETCH_ATOM("_NET_WM_ALLOWED_ACTIONS");
148 FETCH_ATOM("_NET_WM_ACTION_MOVE");
149 FETCH_ATOM("_NET_WM_ACTION_RESIZE");
150 FETCH_ATOM("_NET_WM_ACTION_MINIMIZE");
151 FETCH_ATOM("_NET_WM_ACTION_SHADE");
152 FETCH_ATOM("_NET_WM_ACTION_STICK");
153 FETCH_ATOM("_NET_WM_ACTION_MAXIMIZE_HORZ");
154 FETCH_ATOM("_NET_WM_ACTION_MAXIMIZE_VERT");
155 FETCH_ATOM("_NET_WM_ACTION_FULLSCREEN");
156 FETCH_ATOM("_NET_WM_ACTION_CHANGE_DESKTOP");
157 FETCH_ATOM("_NET_WM_ACTION_CLOSE");
158 FETCH_ATOM("_NET_WM_ACTION_ABOVE");
159 FETCH_ATOM("_NET_WM_ACTION_BELOW");
161 FETCH_ATOM("_NET_WM_STRUT");
162 FETCH_ATOM("_NET_WM_STRUT_PARTIAL");
163 FETCH_ATOM("_NET_WM_ICON_GEOMETRY");
164 FETCH_ATOM("_NET_WM_ICON");
165 FETCH_ATOM("_NET_WM_PID");
166 FETCH_ATOM("_NET_WM_HANDLED_ICONS");
167 FETCH_ATOM("_NET_WM_USER_TIME");
168 FETCH_ATOM("_NET_STARTUP_ID");
169 FETCH_ATOM("_NET_FRAME_EXTENTS");
171 FETCH_ATOM("_NET_WM_PING");
172 FETCH_ATOM("_NET_WM_SYNC_REQUEST");
173 FETCH_ATOM("_NET_WM_SYNC_REQUEST_COUNTER");
175 FETCH_ATOM("_NET_WM_WINDOW_OPACITY");
176 FETCH_ATOM("_NET_WM_WINDOW_SHADOW");
177 FETCH_ATOM("_NET_WM_WINDOW_SHADE");
179 FETCH_ATOM("_NET_STARTUP_INFO_BEGIN");
180 FETCH_ATOM("_NET_STARTUP_INFO");
182 /* selection atoms */
183 FETCH_ATOM("TARGETS");
184 FETCH_ATOM("CLIPBOARD");
185 FETCH_ATOM("_ECORE_SELECTION_PRIMARY");
186 FETCH_ATOM("_ECORE_SELECTION_SECONDARY");
187 FETCH_ATOM("_ECORE_SELECTION_CLIPBOARD");
189 /* These atoms are already internally defined */
190 ECORE_X_ATOM_SELECTION_PRIMARY = 1;
191 ECORE_X_ATOM_SELECTION_SECONDARY = 2;
192 ECORE_X_ATOM_ATOM = 4;
193 ECORE_X_ATOM_CARDINAL = 6;
194 ECORE_X_ATOM_STRING = 31;
195 ECORE_X_ATOM_WINDOW = 33;
196 ECORE_X_ATOM_WM_NAME = 39;
197 ECORE_X_ATOM_WM_ICON_NAME = 37;
198 ECORE_X_ATOM_WM_NORMAL_HINTS = 40;
199 ECORE_X_ATOM_WM_SIZE_HINTS = 41;
200 ECORE_X_ATOM_WM_HINTS = 35;
201 ECORE_X_ATOM_WM_CLASS = 67;
202 ECORE_X_ATOM_WM_TRANSIENT_FOR = 68;
203 ECORE_X_ATOM_WM_COMMAND = 34;
204 ECORE_X_ATOM_WM_CLIENT_MACHINE = 36;
205 ECORE_X_ATOM_WM_ICON_SIZE = 38;
207 /* Initialize the globally defined xdnd atoms */
208 ECORE_X_DND_ACTION_COPY = ECORE_X_ATOM_XDND_ACTION_COPY;
209 ECORE_X_DND_ACTION_MOVE = ECORE_X_ATOM_XDND_ACTION_MOVE;
210 ECORE_X_DND_ACTION_LINK = ECORE_X_ATOM_XDND_ACTION_LINK;
211 ECORE_X_DND_ACTION_ASK = ECORE_X_ATOM_XDND_ACTION_ASK;
212 ECORE_X_DND_ACTION_PRIVATE = ECORE_X_ATOM_XDND_ACTION_PRIVATE;
216 _ecore_x_atom_init_finalize(xcb_intern_atom_cookie_t *atom_cookies)
218 xcb_intern_atom_reply_t *reply = NULL;
222 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_COMPOUND_TEXT);
223 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_FILE_NAME);
224 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_TEXT);
225 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_UTF8_STRING);
228 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_XDND);
229 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_XDND);
230 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_AWARE);
231 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ENTER);
232 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_TYPE_LIST);
233 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_POSITION);
234 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_COPY);
235 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_MOVE);
236 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_PRIVATE);
237 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_ASK);
238 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_LIST);
239 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_LINK);
240 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_DESCRIPTION);
241 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_PROXY);
242 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_STATUS);
243 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_LEAVE);
244 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_DROP);
245 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_FINISHED);
248 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_E_FRAME_SIZE);
251 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WIN_LAYER);
254 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_PROTOCOLS);
255 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_COLORMAP_WINDOWS);
257 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_STATE);
259 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_CHANGE_STATE);
261 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_TAKE_FOCUS);
262 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_SAVE_YOURSELF);
263 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_DELETE_WINDOW);
265 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_COLORMAP_NOTIFY);
267 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SM_CLIENT_ID);
268 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_CLIENT_LEADER);
269 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_WINDOW_ROLE);
272 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_MOTIF_WM_HINTS);
275 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SUPPORTED);
276 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLIENT_LIST);
277 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLIENT_LIST_STACKING);
278 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS);
279 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_GEOMETRY);
280 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_VIEWPORT);
281 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CURRENT_DESKTOP);
282 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_NAMES);
283 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_ACTIVE_WINDOW);
284 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WORKAREA);
285 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK);
286 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_VIRTUAL_ROOTS);
287 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_LAYOUT);
288 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SHOWING_DESKTOP);
290 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLOSE_WINDOW);
291 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_MOVERESIZE_WINDOW);
292 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_MOVERESIZE);
293 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_RESTACK_WINDOW);
294 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS);
296 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_NAME);
297 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_VISIBLE_NAME);
298 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON_NAME);
299 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME);
300 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_DESKTOP);
302 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE);
303 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP);
304 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK);
305 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR);
306 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU);
307 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY);
308 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH);
309 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG);
310 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL);
312 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE);
313 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MODAL);
314 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_STICKY);
315 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT);
316 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ);
317 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SHADED);
318 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR);
319 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER);
320 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_HIDDEN);
321 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN);
322 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_ABOVE);
323 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_BELOW);
324 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION);
326 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS);
327 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MOVE);
328 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_RESIZE);
329 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE);
330 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_SHADE);
331 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_STICK);
332 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ);
333 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT);
334 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN);
335 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP);
336 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_CLOSE);
337 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_ABOVE);
338 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_BELOW);
340 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STRUT);
341 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STRUT_PARTIAL);
342 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON_GEOMETRY);
343 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON);
344 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_PID);
345 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_HANDLED_ICONS);
346 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_USER_TIME);
347 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_ID);
348 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_FRAME_EXTENTS);
350 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_PING);
351 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_SYNC_REQUEST);
352 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER);
354 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_OPACITY);
355 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_SHADOW);
356 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_SHADE);
358 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN);
359 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_INFO);
361 /* selection atoms */
362 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_TARGETS);
363 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_CLIPBOARD);
364 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_PRIMARY);
365 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_SECONDARY);
366 FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD);
371 * Sends the InternAtom request.
372 * @param name Name of the requested atom.
373 * @ingroup Ecore_X_Atom_Group
376 ecore_x_atom_get_prefetch(const char *name)
378 xcb_intern_atom_cookie_t cookie;
380 cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(name), name);
381 _ecore_xcb_cookie_cache(cookie.sequence);
385 * Gets the reply of the InternAtom request sent by ecore_x_atom_get_prefetch().
386 * @ingroup Ecore_X_Atom_Group
389 ecore_x_atom_get_fetch(void)
391 xcb_intern_atom_cookie_t cookie;
392 xcb_intern_atom_reply_t *reply;
394 cookie.sequence = _ecore_xcb_cookie_get();
395 reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
396 _ecore_xcb_reply_cache(reply);
400 * Retrieves the atom value associated to a name.
401 * @param name Unused.
402 * @return Associated atom value.
404 * Retrieves the atom value associated to a name. The reply is the
405 * returned value of the function ecore_xcb_intern_atom_reply(). If
406 * @p reply is @c NULL, the NULL atom is returned. Otherwise, the atom
407 * associated to the name is returned.
409 * To use this function, you must call before, and in order,
410 * ecore_x_atom_get_prefetch(), which sends the InternAtom request,
411 * then ecore_x_atom_get_fetch(), which gets the reply.
412 * @ingroup Ecore_X_Atom_Group
415 ecore_x_atom_get(const char *name __UNUSED__)
417 xcb_intern_atom_reply_t *reply;
419 reply = _ecore_xcb_reply_get();
420 if (!reply) return XCB_NONE;
427 * Sends the GetAtomName request.
428 * @param atom Atom to get the name from.
429 * @ingroup Ecore_X_Atom_Group
432 ecore_x_get_atom_name_prefetch(Ecore_X_Atom atom)
434 xcb_get_atom_name_cookie_t cookie;
436 cookie = xcb_get_atom_name_unchecked(_ecore_xcb_conn, atom);
437 _ecore_xcb_cookie_cache(cookie.sequence);
441 * Gets the reply of the GetAtomName request sent by ecore_x_get_atom_name_prefetch().
442 * @ingroup Ecore_X_Atom_Group
445 ecore_x_get_atom_name_fetch(void)
447 xcb_get_atom_name_cookie_t cookie;
448 xcb_get_atom_name_reply_t *reply;
450 cookie.sequence = _ecore_xcb_cookie_get();
451 reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookie, NULL);
452 _ecore_xcb_reply_cache(reply);
456 * Retrieves the name of the given atom.
457 * @param atom Unused.
458 * @return The name of the atom.
460 * To use this function, you must call before, and in order,
461 * ecore_x_get_atom_name_prefetch(), which sends the GetAtomName request,
462 * then ecore_x_get_atom_name_fetch(), which gets the reply.
463 * @ingroup Ecore_X_Atom_Group
466 ecore_x_atom_name_get(Ecore_X_Atom atom)
468 xcb_get_atom_name_reply_t *reply;
472 reply = _ecore_xcb_reply_get();
473 if (!reply) return NULL;
475 length = xcb_get_atom_name_name_length(reply);
476 name = (char *)malloc(sizeof(char) * (length + 1));
477 if (!name) return NULL;
479 memcpy(name, xcb_get_atom_name_name(reply), length);