diff options
author | Tim Blechmann <tim@klingt.org> | 2024-03-18 09:43:54 +0800 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-04-03 16:57:18 +0000 |
commit | b4d29b7d31e7b458385bedc0c788328ca669244a (patch) | |
tree | a6808be587b404fb79e4a2e3e52fdc940b8d8db7 | |
parent | 401848ec816a0d23d2b56aece7305a7f3479753e (diff) |
GStreamer: process messages immediately
GStreamer delivers messages on the application thread, dispatching
events over a queue will could cause application logic to be reordered,
causing unit test failures
Task-number: QTBUG-123905
Pick-to: 6.5
Change-Id: I2da313cde5a814d93337d532f8beb679a66c4fb1
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit a4a4221d4b71cd8b97066be27b9c6596c3ce77e6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 137e2188b0702fa1b9259c0eec1302a4d4fa5543)
-rw-r--r-- | src/plugins/multimedia/gstreamer/common/qgstpipeline.cpp | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/plugins/multimedia/gstreamer/common/qgstpipeline.cpp b/src/plugins/multimedia/gstreamer/common/qgstpipeline.cpp index 7ac6debd6..04852c542 100644 --- a/src/plugins/multimedia/gstreamer/common/qgstpipeline.cpp +++ b/src/plugins/multimedia/gstreamer/common/qgstpipeline.cpp @@ -80,7 +80,7 @@ private Q_SLOTS: } private: - void processMessage(GstMessage* message) + void processMessage(GstMessage *message) { QGstreamerMessage msg{ message, @@ -89,20 +89,9 @@ private: doProcessMessage(msg); } - void queueMessage(GstMessage* message) + static gboolean busCallback(GstBus *, GstMessage *message, gpointer data) { - QGstreamerMessage msg{ - message, - QGstreamerMessage::NeedsRef, - }; - QMetaObject::invokeMethod(this, "doProcessMessage", Qt::QueuedConnection, - Q_ARG(QGstreamerMessage, msg)); - } - - static gboolean busCallback(GstBus *bus, GstMessage *message, gpointer data) - { - Q_UNUSED(bus); - static_cast<QGstPipelinePrivate *>(data)->queueMessage(message); + static_cast<QGstPipelinePrivate *>(data)->processMessage(message); return TRUE; } }; |