이벤트를 수신하지 않았더라도 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
}