对于X上的揭发事件等待一段有限的时间,然后醒来并重新绘制,即使没有收到暴露事件,最好的方法是什么?目的是让opengl动画有时在其他地方运行,如果需要的话,我只是想重新绘制。这里是我的代码,因为我有现在,下面检查什么我正在寻找伪代码:X:以固定的时间间隔触发事件
do {
XNextEvent(dpy, &event);
switch(event.type) {
...
case Expose:
need_redraw = True;
break;
}
} while(XPending(dpy)); /* loop to compress events */
if (need_redraw)
{
// do redraw
}
这是我想什么是伪例如:
bool animation_enabled = true;
XPostTimeoutEventEvery(0.3); // <-- X will send a "Timeout"
// event each 0.3 seconds.
do {
XNextEvent(dpy, &event);
switch(event.type) {
...
case Expose:
// Redraw if it is required
need_redraw = True;
break;
// -- here --
case Timeout:
// Otherwise, after 0.3 seconds, redraw anyway if
// the animation is running
if (animation_enabled)
{
need_redraw = True;
}
break;
}
} while(XPending(dpy)); /* loop to compress events */
if (need_redraw)
{
// do redraw
// potentially change "animation_enabled" value
}