xcb_poll_for_event,请问这个函数returns怎么报错了?
xcb_poll_for_event, how does this function returns an error?
我阅读了关于 xcb_poll_for_event
的文档,它说函数
returns the next event or error from the server...
这是在我的系统上使用的原型:
xcb_generic_event_t* xcb_poll_for_event(xcb_connection_t* c)
问题很简单,如何判断return是不是错误,然后得到一些错误码?
我问是因为,据我了解,XCB
没有习惯将 return 指针“强制转换”为其他指针。 xcb_generic_event_t
struct
确实有一个 response_type
字段,但没有关于该字段的文档。有人可以分享一个例子吗?
更新
x.org 网站上几乎没有关于在事件循环中处理错误的示例。关于示例状态:
For requests which have no reply (for example xcb_map_window), errors
will be delivered to the event loop (you will receive an X11 event of
type 0 when calling xcb_poll_for_event)
错误处理示例代码:
if (event->response_type == 0) {
fprintf("Received X11 error %d\n", error->error_code);
free(event);
continue;
}
但是,这个 error
变量又是从哪里来的呢? 在例子的任何地方都不是declared/defined
与文档相关 link:xcb-requests
I ask because, as I understand, it is not a habit of XCB to "just cast" a return pointer to some other pointer.
是的,是的。对于错误和事件,你会得到一个指向某个通用结构的指针,然后你必须自己找出正确的类型并转换指针。错误有 response_type == 0
并且事件有一个数字准确说明它是哪种类型的事件(某些扩展除外,其中来自该扩展的所有事件都具有相同的 response_type
并且另一个字段包含“子类型”事件)。
因此,当您收到带有 response_type == 0
的事件时,将指针指向 xcb_generic_error_t*
。
我阅读了关于 xcb_poll_for_event
的文档,它说函数
returns the next event or error from the server...
这是在我的系统上使用的原型:
xcb_generic_event_t* xcb_poll_for_event(xcb_connection_t* c)
问题很简单,如何判断return是不是错误,然后得到一些错误码?
我问是因为,据我了解,XCB
没有习惯将 return 指针“强制转换”为其他指针。 xcb_generic_event_t
struct
确实有一个 response_type
字段,但没有关于该字段的文档。有人可以分享一个例子吗?
更新
x.org 网站上几乎没有关于在事件循环中处理错误的示例。关于示例状态:
For requests which have no reply (for example xcb_map_window), errors will be delivered to the event loop (you will receive an X11 event of type 0 when calling xcb_poll_for_event)
错误处理示例代码:
if (event->response_type == 0) {
fprintf("Received X11 error %d\n", error->error_code);
free(event);
continue;
}
但是,这个 error
变量又是从哪里来的呢? 在例子的任何地方都不是declared/defined
与文档相关 link:xcb-requests
I ask because, as I understand, it is not a habit of XCB to "just cast" a return pointer to some other pointer.
是的,是的。对于错误和事件,你会得到一个指向某个通用结构的指针,然后你必须自己找出正确的类型并转换指针。错误有 response_type == 0
并且事件有一个数字准确说明它是哪种类型的事件(某些扩展除外,其中来自该扩展的所有事件都具有相同的 response_type
并且另一个字段包含“子类型”事件)。
因此,当您收到带有 response_type == 0
的事件时,将指针指向 xcb_generic_error_t*
。