summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-03-18 09:43:54 +0800
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-04-03 16:57:18 +0000
commitb4d29b7d31e7b458385bedc0c788328ca669244a (patch)
treea6808be587b404fb79e4a2e3e52fdc940b8d8db7
parent401848ec816a0d23d2b56aece7305a7f3479753e (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.cpp17
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;
}
};