From: Jamey Sharp Date: Fri, 15 Sep 2006 07:29:39 +0000 (-0700) Subject: Provide a "has error" property for XCBConnection. X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac17ae62fe1a3a29991e36e35eeee838ac4acb00;p=free-sw%2Fxcb%2Flibxcb Provide a "has error" property for XCBConnection. --- diff --git a/src/xcb.h b/src/xcb.h index 114f2cf..3d193e1 100644 --- a/src/xcb.h +++ b/src/xcb.h @@ -333,6 +333,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. diff --git a/src/xcb_conn.c b/src/xcb_conn.c index be80bac..b0d727b 100644 --- a/src/xcb_conn.c +++ b/src/xcb_conn.c @@ -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; diff --git a/src/xcbint.h b/src/xcbint.h index 9048e9d..f059522 100644 --- a/src/xcbint.h +++ b/src/xcbint.h @@ -142,6 +142,8 @@ void _xcb_ext_destroy(XCBConnection *c); /* xcb_conn.c */ struct XCBConnection { + int has_error; + /* constant data */ XCBSetup *setup; int fd;