xcb_poll_对于_事件,此函数如何返回错误?
我阅读了有关xcb_poll_for_event的文档,它说函数 从服务器返回下一个事件或错误 以下是我的系统上使用的原型: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\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 haveresponse\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设置属性之前获得属性值。