diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-30 12:30:11 +0200 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-30 14:46:50 +0200 |
commit | 40def8b6307816a50b277700bd060b3caa015402 (patch) | |
tree | e4717c264267f2aa7ac824729b01b1fcb0186a72 /src/multimedia/platform/gstreamer/common/qgstreamermessage.cpp | |
parent | 60e1b833fcbfe330b229b2f603436d589497b12c (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.cpp | 4 |
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() { |