Apple: Apple launchd cleanup
[free-sw/xcb/libxcb] / src / xcb_xid.c
index 7d7f784..7ff0c5f 100644 (file)
 #include "xcb.h"
 #include "xcbext.h"
 #include "xcbint.h"
-#include "extensions/xc_misc.h"
+#include "xc_misc.h"
 
 /* Public interface */
 
-CARD32 XCBGenerateID(XCBConnection *c)
+uint32_t xcb_generate_id(xcb_connection_t *c)
 {
-    CARD32 ret;
+    uint32_t ret;
+    if(c->has_error)
+        return -1;
     pthread_mutex_lock(&c->xid.lock);
     if(c->xid.last == c->xid.max)
     {
-           XCBXCMiscGetXIDRangeRep *range;
-           range = XCBXCMiscGetXIDRangeReply(c, XCBXCMiscGetXIDRange(c), 0);
-           c->xid.last = range->start_id;
-           c->xid.max = range->start_id + (range->count - 1) * c->xid.inc;
-           free(range);
+        xcb_xc_misc_get_xid_range_reply_t *range;
+        range = xcb_xc_misc_get_xid_range_reply(c, xcb_xc_misc_get_xid_range(c), 0);
+        if(!range)
+        {
+            pthread_mutex_unlock(&c->xid.lock);
+            return -1;
+        }
+        c->xid.last = range->start_id;
+        c->xid.max = range->start_id + (range->count - 1) * c->xid.inc;
+        free(range);
     }
     ret = c->xid.last | c->xid.base;
     c->xid.last += c->xid.inc;
@@ -53,7 +60,7 @@ CARD32 XCBGenerateID(XCBConnection *c)
 
 /* Private interface */
 
-int _xcb_xid_init(XCBConnection *c)
+int _xcb_xid_init(xcb_connection_t *c)
 {
     if(pthread_mutex_init(&c->xid.lock, 0))
         return 0;
@@ -64,7 +71,7 @@ int _xcb_xid_init(XCBConnection *c)
     return 1;
 }
 
-void _xcb_xid_destroy(XCBConnection *c)
+void _xcb_xid_destroy(xcb_connection_t *c)
 {
     pthread_mutex_destroy(&c->xid.lock);
 }