From caafc3199f049399c0f170c0b1930ef12a85d18a Mon Sep 17 00:00:00 2001 From: Henning Sten Date: Wed, 17 Sep 2008 20:59:23 +0200 Subject: introduce function xcb_atom_get (essentially a synchronous xcb_intern_atom, use it only on non-performance critical execution paths) Signed-off-by: Julien Danjou --- atom/atoms.gperf.m4 | 13 +++++++++++++ atom/xcb_atom.h.m4 | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/atom/atoms.gperf.m4 b/atom/atoms.gperf.m4 index 0b7416b..d26814e 100644 --- a/atom/atoms.gperf.m4 +++ b/atom/atoms.gperf.m4 @@ -42,6 +42,19 @@ define(`DO', ` OFFSET,define(`OFFSET', eval(OFFSET+1+len($1)))')dnl include(atomlist.m4)`'dnl }; +xcb_atom_t xcb_atom_get(xcb_connection_t *connection, const char *atom_name) +{ + if(atom_name == NULL) + return XCB_NONE; + xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection, + xcb_intern_atom(connection, 0, strlen(atom_name), atom_name), NULL); + if(!reply) + return XCB_NONE; + xcb_atom_t atom = reply->atom; + free(reply); + return atom; +} + xcb_atom_t xcb_atom_get_predefined(uint16_t name_len, const char *name) { const struct atom_map *value = in_word_set(name, name_len); diff --git a/atom/xcb_atom.h.m4 b/atom/xcb_atom.h.m4 index d4957c5..7eb44cd 100644 --- a/atom/xcb_atom.h.m4 +++ b/atom/xcb_atom.h.m4 @@ -15,6 +15,16 @@ typedef struct { } u; } xcb_atom_fast_cookie_t; +/** + * @brief Get an atom synchronously. + * @param connection The connection to the X server. + * @param atom_name The name of the atom that should be returned. + * @return The requested atom, or XCB_NONE if there is an error. + * + * xcb_atom_get() is essentially a synchronous version of xcb_intern_atom(), + * use it only on non-performance critical execution paths. + */ +xcb_atom_t xcb_atom_get(xcb_connection_t *connection, const char *atom_name); xcb_atom_t xcb_atom_get_predefined(uint16_t name_len, const char *name); xcb_atom_fast_cookie_t xcb_atom_get_fast(xcb_connection_t *c, uint8_t only_if_exists, uint16_t name_len, const char *name); xcb_atom_t xcb_atom_get_fast_reply(xcb_connection_t *c, xcb_atom_fast_cookie_t cookie, xcb_generic_error_t **e); -- cgit v1.2.3