diff options
author | Henning Sten <henning.sten@yahoo.com> | 2008-09-17 20:59:23 +0200 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2008-09-18 10:15:05 +0200 |
commit | 85f200ad455d8ac90e04b8d2a9b6e7ae948abe5e (patch) | |
tree | ad94e6d0df1a3aaf35f6a96596e6e286cda4a4c2 | |
parent | 28cd98c0a6e92e257613729fd2ac8c4630077edb (diff) |
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 <julien@danjou.info>
-rw-r--r-- | atom/atoms.gperf.m4 | 13 | ||||
-rw-r--r-- | atom/xcb_atom.h.m4 | 10 |
2 files changed, 23 insertions, 0 deletions
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); |