c++ - 从 X11 队列中删除额外的公开消息

标签 c++ x11 xlib

我有一个程序,其中有一个线程使用 XSendEvent 生成 Expose 消息。第二个线程接收 Expose 消息以及其他消息(主要是输入处理)。问题在于发送线程以恒定速率 (~60Hz) 发送 Expose 消息,但接收线程的渲染速度可能比该速率慢。 X11 队列将因额外的 Expose 消息而陷入困境,并且任何输入处理消息将开始落后于所有这些额外的 Expose 消息。

在 Windows 中,这不是问题,因为 Windows 会自动将所有 WM_PAINT 消息合并为单个消息。在X11中有什么方法可以做到这一点,或者有其他方法可以解决这个问题吗?

最佳答案

您可以自己轻松地与 XCheckTypedEvent() 和 friend 合并任何类型的事件。

关于c++ - 从 X11 队列中删除额外的公开消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659561/

相关文章:

c++ - Qt 项目中对 XOpenDisplay 的 undefined reference

c++ - 在 Mac OS 上使用 C/C++ 获得鼠标跟踪速度

c - 如何创建与 EGL 一起使用的 native X11 窗口

c - 我如何获取并同步所有 X11 窗口的完整列表?

c++ - X 的错误处理程序抛出异常是否安全?

c++ - 如何避免cairo绘图xlib表面闪烁?

C++ typedef 与类冲突

c++ - QXmlStreamReader (Qt5) : get all sub-elements inside a tag

c++ - 在 MainWindow 中看不到我的标签和布局

c - 使用 X11 渲染文本时如何添加换行符,