Platform/Unix/X11EventQueue: Fix bug where messeges where not flushed to the event queue.
XEventsQueued(disp, QueuedAlready) only returns the number of events currently in the queue and does not flush new events. So this must happen elsewhere and if it does not we will never see any events. i noticed this bug when removing the call to glXSwapBuffers(). Fix this by using XPending() instead as this flushes new events if the queue is empty before returning the length. see https://tronche.com/gui/x/xlib/event-handling/XEventsQueued.html and https://tronche.com/gui/x/xlib/event-handling/XPending.html
This commit is contained in:
parent
573d546961
commit
cdea7e238c
1 changed files with 2 additions and 1 deletions
|
|
@ -28,7 +28,7 @@ bool X11EventQueue::poll(Event& event)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (XEventsQueued(m_disp, QueuedAlready)) {
|
||||
if (XPending(m_disp)) {
|
||||
XEvent xevent;
|
||||
|
||||
XNextEvent(m_disp, &xevent);
|
||||
|
|
@ -63,6 +63,7 @@ bool X11EventQueue::poll(Event& event)
|
|||
break;
|
||||
default:
|
||||
// Pass to window.
|
||||
Log::info("X11: Window Event");
|
||||
X11WindowEventHandler::process(m_disp, xevent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue