xcb_poll_对于_事件,此函数如何返回错误?

xcb_poll_对于_事件,此函数如何返回错误?,c,x11,xcb,C,X11,Xcb,我阅读了有关xcb_poll_for_event的文档,它说函数 从服务器返回下一个事件或错误 以下是我的系统上使用的原型: xcb\u通用\u事件\u t*xcb\u轮询\u事件(xcb\u连接\u t*c) 问题很简单,如何确定返回是否为错误并随后获得一些错误代码 我这样问是因为,据我所知,XCB不习惯将返回指针“强制”到其他指针。xcb\u generic\u event\tstruct确实有一个response\u type字段,但该字段上没有可用的文档。有人能举个例子吗 更新 org网

我阅读了有关xcb_poll_for_event的文档,它说函数

从服务器返回下一个事件或错误

以下是我的系统上使用的原型:

xcb\u通用\u事件\u t*xcb\u轮询\u事件(xcb\u连接\u t*c)

问题很简单,如何确定返回是否为错误并随后获得一些错误代码

我这样问是因为,据我所知,
XCB
不习惯将返回指针“强制”到其他指针。
xcb\u generic\u event\t
struct
确实有一个
response\u type
字段,但该字段上没有可用的文档。有人能举个例子吗

更新

org网站上很少有关于处理事件循环中的错误的例子。其中一个例子是:

对于没有回复的请求(例如xcb_map_窗口),错误 将被传递到事件循环(您将收到 在调用xcb_poll_以获取_事件时键入0)

带有错误处理的示例代码:

if (event->response_type == 0) {
 fprintf("Received X11 error %d\n", error->error_code);
 free(event);
 continue;
}
但是,这个
错误
变量又是从哪里来的呢在示例的任何地方都没有声明/定义它。

文件的相关链接:

我这样问是因为,据我所知,XCB不习惯将返回指针“强制转换”到其他指针

是的。对于错误和事件,您将获得指向某个泛型结构的指针,然后您必须自己确定正确的类型并强制转换指针。Error have
response\u type==0
和events都有一个数字,可以准确地说明它是哪种类型的事件(除了一些扩展,其中来自该扩展的所有事件都具有相同的
response\u type
,另一个字段则包含事件的“subtype”)


因此,当您得到一个
response\u type==0的事件时,将指针投射到
xcb\u generic\u error\u t*

谢谢。想看看我的另一个
XCB
问题吗?我看到了那个问题,但我认为它无法回答,对不起。如果只得到零值,则表示该属性必须已设置为零值。从您的代码模板来看,您似乎可以处理所有其他情况。我最好的调试想法是:尝试在xtrace下运行程序,检查属性是否真的有零值:我设法解决了另一个问题。我被这个答案束缚住了。答案似乎有点离谱。解决方案是等待
XCB\u PROPERTY\u NOTIFY
事件,并将接收到的原子与
\u NET\u FRAME\u区段
原子进行比较。在接收到特定事件的情况下,WM已设置所需的属性。我的原始解决方案可能会在WM设置属性之前获得属性值。