diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-09-16 20:32:07 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-09-16 20:32:07 +0900 |
| commit | 03c24c51224e85eb96527a512f5f0483464fc810 (patch) | |
| tree | 2feede4d9448fc881b0d4b8a193c0c82f6627221 /xcb/c.go | |
| parent | 8bdae74ebe172239573bab9fca634cf350cbd29d (diff) | |
move acl and xcb binding packages to top level
These packages are reasonably clean and do not interact with other packages.
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'xcb/c.go')
| -rw-r--r-- | xcb/c.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/xcb/c.go b/xcb/c.go new file mode 100644 index 00000000..8fe59d8c --- /dev/null +++ b/xcb/c.go @@ -0,0 +1,33 @@ +package xcb + +import ( + "errors" +) + +//#include <stdlib.h> +//#include <xcb/xcb.h> +//#cgo linux LDFLAGS: -lxcb +import "C" + +func xcbHandleConnectionError(c *C.xcb_connection_t) error { + if errno := C.xcb_connection_has_error(c); errno != 0 { + switch errno { + case C.XCB_CONN_ERROR: + return errors.New("connection error") + case C.XCB_CONN_CLOSED_EXT_NOTSUPPORTED: + return errors.New("extension not supported") + case C.XCB_CONN_CLOSED_MEM_INSUFFICIENT: + return errors.New("memory not available") + case C.XCB_CONN_CLOSED_REQ_LEN_EXCEED: + return errors.New("request length exceeded") + case C.XCB_CONN_CLOSED_PARSE_ERR: + return errors.New("invalid display string") + case C.XCB_CONN_CLOSED_INVALID_SCREEN: + return errors.New("server has no screen matching display") + default: + return errors.New("generic X11 failure") + } + } else { + return nil + } +} |
