Provide a "has error" property for XCBConnection.
authorJamey Sharp <jamey@minilop.net>
Fri, 15 Sep 2006 07:29:39 +0000 (00:29 -0700)
committerJamey Sharp <jamey@minilop.net>
Thu, 21 Sep 2006 22:17:18 +0000 (15:17 -0700)
src/xcb.h
src/xcb_conn.c
src/xcbint.h

index 114f2cf..3d193e1 100644 (file)
--- a/src/xcb.h
+++ b/src/xcb.h
@@ -334,6 +334,21 @@ const XCBSetup *XCBGetSetup(XCBConnection *c);
 int XCBGetFileDescriptor(XCBConnection *c);
 
 /**
+ * @brief Test whether the connection has shut down due to a fatal error.
+ * @param c: The connection.
+ * @return 1 if the connection is in an error state; 0 otherwise.
+ *
+ * Some errors that occur in the context of an XCBConnection
+ * are unrecoverable. When such an error occurs, the
+ * connection is shut down and further operations on the
+ * XCBConnection have no effect.
+ *
+ * @todo Other functions should document the conditions in
+ * which they shut down the connection.
+ */
+int XCBConnectionHasError(XCBConnection *c);
+
+/**
  * @brief Connects to the X server.
  * @param fd: The file descriptor.
  * @param auth_info: Authentication data.
index be80bac..b0d727b 100644 (file)
@@ -187,6 +187,12 @@ int XCBGetFileDescriptor(XCBConnection *c)
     return c->fd;
 }
 
+int XCBConnectionHasError(XCBConnection *c)
+{
+    /* doesn't need locking because it's read and written atomically. */
+    return c->has_error;
+}
+
 XCBConnection *XCBConnectToFD(int fd, XCBAuthInfo *auth_info)
 {
     XCBConnection* c;
index 9048e9d..f059522 100644 (file)
@@ -142,6 +142,8 @@ void _xcb_ext_destroy(XCBConnection *c);
 /* xcb_conn.c */
 
 struct XCBConnection {
+    int has_error;
+
     /* constant data */
     XCBSetup *setup;
     int fd;