From 1874d01eda378031623972fcdd1a7224fce7635d Mon Sep 17 00:00:00 2001 From: Jochen Henneberg Date: Wed, 6 Sep 2017 07:59:56 +0000 Subject: [PATCH] qmlglsink: Expose itemInitialized as property Instead of just signalling when ready exposing the state as a property allows us to bind at any time if player is loaded async. --- ext/qt/qtitem.cc | 8 +++++++- ext/qt/qtitem.h | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc index b20a6fb5da..65b883eab8 100644 --- a/ext/qt/qtitem.cc +++ b/ext/qt/qtitem.cc @@ -178,6 +178,12 @@ QtGLVideoItem::getForceAspectRatio() return this->priv->force_aspect_ratio; } +bool +QtGLVideoItem::itemInitialized() +{ + return m_openGlContextInitialized; +} + QSGNode * QtGLVideoItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) @@ -290,7 +296,7 @@ QtGLVideoItem::onSceneGraphInitialized () GST_DEBUG ("%p created wrapped GL context %" GST_PTR_FORMAT, this, this->priv->other_context); - emit itemInitialized(); + emit itemInitializedChanged(); } void diff --git a/ext/qt/qtitem.h b/ext/qt/qtitem.h index 8cffc24454..065d043eaf 100644 --- a/ext/qt/qtitem.h +++ b/ext/qt/qtitem.h @@ -64,6 +64,11 @@ class InitializeSceneGraph; class QtGLVideoItem : public QQuickItem, protected QOpenGLFunctions { Q_OBJECT + + Q_PROPERTY(bool itemInitialized + READ itemInitialized + NOTIFY itemInitializedChanged) + public: QtGLVideoItem(); ~QtGLVideoItem(); @@ -72,13 +77,14 @@ public: void getDAR(gint *, gint *); void setForceAspectRatio(bool); bool getForceAspectRatio(); + bool itemInitialized(); QSharedPointer getInterface() { return proxy; }; /* private for C interface ... */ QtGLVideoItemPrivate *priv; Q_SIGNALS: - void itemInitialized(); + void itemInitializedChanged(); private Q_SLOTS: void handleWindowChanged(QQuickWindow * win);