diff options
-rw-r--r-- | src/xcb.h | 15 | ||||
-rw-r--r-- | src/xcb_conn.c | 6 | ||||
-rw-r--r-- | src/xcbint.h | 2 |
3 files changed, 23 insertions, 0 deletions
@@ -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. 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; |