有没有办法在X11中更改ConfigureNotify事件频率?

我有一个小图形程序,它使用ConfigureNotify事件来检测窗口大小调整和重绘应用程序。 但是,当拖动窗口resize时,resize事件似乎有点慢,这导致重绘不稳定。 有没有办法配置此事件率? 除此之外,有没有办法检测resize的开始/结束,以便我可以推迟重绘,直到达到最终大小?

不,不可能配置事件率; 他们只是在X服务器认为合适的时候进来。 但是,部分跳动可能正是因为你在resize事件后立即更新窗口(我希望你不要在事件处理程序中执行它…)原因是你立即让X服务器忙于你的绘画,给它几点时间发回事件。

我对这种行为的标准解决方案是:在resize时,使用计时器定期重新绘制(例如,每200毫秒左右)。 使用绘制例程开始时的宽度和高度(请记住,绘制时可以接收resize事件!)。 如果自上次计时器事件以来宽度/高度没有变化,请停止计时器。

我建议使用Xt工具包来实现定时器和其他回调; 它比裸Xlib调用更容易使用。