summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2021-09-30 12:30:11 +0200
committerPiotr Srebrny <piotr.srebrny@qt.io>2021-09-30 14:46:50 +0200
commit40def8b6307816a50b277700bd060b3caa015402 (patch)
treee4717c264267f2aa7ac824729b01b1fcb0186a72 /src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp
parent60e1b833fcbfe330b229b2f603436d589497b12c (diff)
Do not leak GstMessage and avoid accidental decrease in reference cnt
getMessage() call creates an object that should be unreferenced after using it. This patch encapsulate the returned object in QGstreamerMesssage with proper referance handling. Calling QGstObject(GST_MESSAGE_SRC(gm)).name() will effectively decrease the reference counter on gm, as the object is initialized without increasing reference on it. The patch relaces it with .source().name(). Avoid implicit conversion from raw pointers with reference counting to c++ objects. This may cause accidental errors. Pick-to: 6.2 Change-Id: Ica994bb5c15ddb355af4ed24cbc26fd3a9a288bd Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp')
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp b/src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp
index 950cc46cb..02a5dd3bc 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp
+++ b/src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp
@@ -60,6 +60,10 @@ QGstreamerMessage::QGstreamerMessage(QGstreamerMessage const& m):
gst_message_ref(m_message);
}
+QGstreamerMessage::QGstreamerMessage(const QGstStructure &structure)
+{
+ gst_structure_get(structure.structure, "message", GST_TYPE_MESSAGE, &m_message, nullptr);
+}
QGstreamerMessage::~QGstreamerMessage()
{