gpt4 book ai didi

c++ - XShm 完成事件未设置显示文件描述符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:02 36 4
gpt4 key购买 nike

我有一个定期调用 poll() 的事件循环在一组读取文件描述符上,并在准备好读取时调度事件。这些文件描述符之一是从 XConnectionNumber() 返回的 X 连接文件描述符。并在文件描述符准备就绪时调用以下命令:

XEvent evt;

if (! XPending (display))
return false;

XNextEvent (display, &evt);

// do something with evt

这一切都可以很好地接收显示事件。

我的应用程序中的重绘依赖于 XShm 扩展,它实际上调用了 XShmPutImage()绘制一些像素然后等待完成事件直到再次绘制,通过检查evt.any.type == XShmGetEventBase (display)找到完成事件。在上面的代码中。

问题是 XShm 完成事件似乎没有将显示器的文件描述符设置为准备好进行 I/O,所以我只在其他事件发送到显示器并设置 fd 时才收到重绘事件例如鼠标移动、按键事件等。这导致应用仅在其他事件发生时才响应。

我是否误解了 XShm 完成事件的发送方式?它不应该设置 Display fd 吗?

最佳答案

好的,我已经回答了我自己的问题。看来我需要在显示文件描述符的 pollfd 结构上设置 POLLOUT 标志。以前我只是在等待输入事件时设置 POLLIN,但 XShm 完成事件将 fd 设置为准备写入。

关于c++ - XShm 完成事件未设置显示文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53721671/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com