diff options
Diffstat (limited to 'src/quick/items/qquickwindow_p.h')
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h index 421651b483..c8f156ed37 100644 --- a/src/quick/items/qquickwindow_p.h +++ b/src/quick/items/qquickwindow_p.h @@ -94,6 +94,8 @@ class QTouchEvent; class QQuickWindowRenderLoop; class QQuickWindowIncubationController; +class QOpenGLVertexArrayObjectHelper; + class Q_QUICK_PRIVATE_EXPORT QQuickWindowPrivate : public QWindowPrivate { public: @@ -135,19 +137,21 @@ public: static QMouseEvent *cloneMouseEvent(QMouseEvent *event, QPointF *transformedLocalPos = 0); bool deliverInitialMousePressEvent(QQuickItem *, QMouseEvent *); bool deliverMouseEvent(QMouseEvent *); - bool sendFilteredMouseEvent(QQuickItem *, QQuickItem *, QEvent *); + bool sendFilteredMouseEvent(QQuickItem *, QQuickItem *, QEvent *, QSet<QQuickItem *> *); #ifndef QT_NO_WHEELEVENT bool deliverWheelEvent(QQuickItem *, QWheelEvent *); #endif bool deliverTouchPoints(QQuickItem *, QTouchEvent *, const QList<QTouchEvent::TouchPoint> &, QSet<int> *, - QHash<QQuickItem *, QList<QTouchEvent::TouchPoint> > *); - bool deliverTouchEvent(QTouchEvent *); + QHash<QQuickItem *, QList<QTouchEvent::TouchPoint> > *, QSet<QQuickItem*> *filtered); + void deliverTouchEvent(QTouchEvent *); + void reallyDeliverTouchEvent(QTouchEvent *); bool deliverTouchCancelEvent(QTouchEvent *); + void flushDelayedTouchEvent(); bool deliverHoverEvent(QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos, Qt::KeyboardModifiers modifiers, bool &accepted); - bool deliverMatchingPointsToItem(QQuickItem *item, QTouchEvent *event, QSet<int> *acceptedNewPoints, const QSet<int> &matchingNewPoints, const QList<QTouchEvent::TouchPoint> &matchingPoints); + bool deliverMatchingPointsToItem(QQuickItem *item, QTouchEvent *event, QSet<int> *acceptedNewPoints, const QSet<int> &matchingNewPoints, const QList<QTouchEvent::TouchPoint> &matchingPoints, QSet<QQuickItem*> *filtered); QTouchEvent *touchEventForItemBounds(QQuickItem *target, const QTouchEvent &originalEvent); QTouchEvent *touchEventWithPoints(const QTouchEvent &event, const QList<QTouchEvent::TouchPoint> &newPoints); - bool sendFilteredTouchEvent(QQuickItem *target, QQuickItem *item, QTouchEvent *event); + bool sendFilteredTouchEvent(QQuickItem *target, QQuickItem *item, QTouchEvent *event, QSet<QQuickItem*> *filtered); bool sendHoverEvent(QEvent::Type, QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos, Qt::KeyboardModifiers modifiers, bool accepted); bool clearHover(); @@ -210,6 +214,8 @@ public: QSGRenderLoop *windowManager; QQuickRenderControl *renderControl; QQuickAnimatorController *animationController; + QTouchEvent *delayedTouch; + int touchRecursionGuard; QColor clearColor; @@ -223,12 +229,17 @@ public: uint lastWheelEventAccepted : 1; bool componentCompleted : 1; + Qt::FocusReason lastFocusReason; + QOpenGLFramebufferObject *renderTarget; uint renderTargetId; QSize renderTargetSize; + QOpenGLVertexArrayObjectHelper *vaoHelper; + // Keeps track of which touch point (int) was last accepted by which item QHash<int, QQuickItem *> itemForTouchPointId; + QSet<int> touchMouseIdCandidates; mutable QQuickWindowIncubationController *incubationController; @@ -247,6 +258,15 @@ public: QString *untranslatedMessage, bool isEs); + QMutex renderJobMutex; + QList<QRunnable *> beforeSynchronizingJobs; + QList<QRunnable *> afterSynchronizingJobs; + QList<QRunnable *> beforeRenderingJobs; + QList<QRunnable *> afterRenderingJobs; + QList<QRunnable *> afterSwapJobs; + + void runAndClearJobs(QList<QRunnable *> *jobs); + private: static void cleanupNodesOnShutdown(QQuickItem *); }; |