From ac17ae62fe1a3a29991e36e35eeee838ac4acb00 Mon Sep 17 00:00:00 2001 From: Jamey Sharp Date: Fri, 15 Sep 2006 00:29:39 -0700 Subject: Provide a "has error" property for XCBConnection. --- src/xcb.h | 15 +++++++++++++++ src/xcb_conn.c | 6 ++++++ src/xcbint.h | 2 ++ 3 files changed, 23 insertions(+) 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; -- cgit v1.2.3