Fixed multi-touch event loop problems by selectively processing just the touch events.

This commit is contained in:
Eric Johnston 2013-07-08 16:31:28 -07:00
parent 7de2281226
commit c298f78ae9

View file

@ -955,17 +955,16 @@ void Application::idle() {
// Only run simulation code if more than IDLE_SIMULATE_MSECS have passed since last time we ran
if (diffclock(&_lastTimeIdle, &check) > IDLE_SIMULATE_MSECS) {
// We call processEvents() here because the idle timer takes priority over
// event handling in Qt, so when the framerate gets low events will pile up
// unless we handle them here.
// NOTE - this is commented out for now - causing event processing issues reported by Philip and Ryan
// birarda - July 3rd
// Added some safety catches which will enable us to test this.
// ej - July 3rd
// If we're using multi-touch look, immediately process any
// touch events, and no other events.
// This is necessary because id the idle() call takes longer than the
// interval between idle() calls, the event loop never gets to run,
// and touch events get delayed.
if (_touchLook->isChecked()) {
int maxTimeMS = 1;
processEvents(QEventLoop::ExcludeSocketNotifiers, maxTimeMS);
sendPostedEvents(NULL, QEvent::TouchBegin);
sendPostedEvents(NULL, QEvent::TouchUpdate);
sendPostedEvents(NULL, QEvent::TouchEnd);
}
update(1.0f / _fps);