summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenning Sten <henning.sten@yahoo.com>2008-09-17 20:59:23 +0200
committerJulien Danjou <julien@danjou.info>2008-09-18 10:15:05 +0200
commit85f200ad455d8ac90e04b8d2a9b6e7ae948abe5e (patch)
treead94e6d0df1a3aaf35f6a96596e6e286cda4a4c2
parent28cd98c0a6e92e257613729fd2ac8c4630077edb (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.m413
-rw-r--r--atom/xcb_atom.h.m410
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);