Details
-
Bug
-
Resolution: Unresolved
-
P4: Low
-
None
-
4.7.0
-
None
-
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Snow leopard 10.6.4, Qt 4.7.0
Description
I am trying to implement a pong like game using multitouch on a macbooks touchpad.
Attached you will find a demo application that shows two approaches to implement moving two elements on the screen using multitouch: Widget based and graphicss scene based. Place the mouse pointer in each of them and try to move two fingers. You will see two rects that move according to your fingers.
In the widget based approach, this works always as expected. In the graphics view based approach, it works only in lets say 75% cases. In roughly 25% times, there seems to be a limit on how many events are processed per time so it happens that events are delivered long after the fingers have already been released.
I further observed that the strange behaviour only happens after the second time the graphicsview based widget is used. Please play around with the demo a few times and I hope you can reproduce. Otherwise I'll have to record a video.
Inverted heaviest stack trace when running native graphicssystem on Mac OS X;
15 QtGui 164.0 QGraphicsScenePrivate::_q_processDirtyItems() 14 QtGui 164.0 QGraphicsScene::qt_metacall(QMetaObject::Call, int, void**) 13 pong 164.0 PongScene::qt_metacall(QMetaObject::Call, int, void**) /Users/hhartz/Downloads/pong/moc_PongScene.cpp:62 12 QtCore 164.0 QObject::event(QEvent*) 11 QtGui 164.0 QGraphicsScene::event(QEvent*) 10 pong 164.0 PongScene::event(QEvent*) /Users/hhartz/Downloads/pong/PongScene.cpp:19 9 QtGui 164.0 QApplicationPrivate::notify_helper(QObject*, QEvent*) 8 QtGui 164.0 QApplication::notify(QObject*, QEvent*) 7 QtCore 164.0 QCoreApplication::notifyInternal(QObject*, QEvent*) 6 QtCore 164.0 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) 5 QtGui 164.0 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 4 QtCore 164.0 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 3 QtCore 164.0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) 2 QtCore 164.0 QCoreApplication::exec() 1 pong 164.0 main /Users/hhartz/Downloads/pong/main.cpp:4 0 pong 164.0 start
Attachments
Issue Links
- resulted in
-
QTBUG-14102 Touch events can fill up the event queue, causing latency in touch feedback
- Closed
-
QTBUG-14101 Mouse sometimes starts moving while inside a touch begin event chain with multiple touch points
- Closed