[Xcb-commit] atom

Julien Danjou jdanjou at kemper.freedesktop.org
Thu Sep 18 01:15:29 PDT 2008


 atom/atoms.gperf.m4 |   13 +++++++++++++
 atom/xcb_atom.h.m4  |   10 ++++++++++
 2 files changed, 23 insertions(+)

New commits:
commit 85f200ad455d8ac90e04b8d2a9b6e7ae948abe5e
Author: Henning Sten <henning.sten at yahoo.com>
Date:   Wed Sep 17 20:59:23 2008 +0200

    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 at danjou.info>

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);


More information about the xcb-commit mailing list