summaryrefslogtreecommitdiff
path: root/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch
blob: ffcdc89c1d3ae39def50320f06e26f9db02dfefa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From 4d251f072c6f97b4cf4618103e4e857e499c5ed7 Mon Sep 17 00:00:00 2001
From: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Date: Tue, 5 Nov 2019 13:39:55 +0100
Subject: [PATCH] GStreamer: Fix crash when video sink is used when it has been
 destroyed

When custom pipeline is requested, all playbin related elements must be cleared.

Also when QMediaPlayer is destroying, it disables showing preroll frames,
property of the video sink, which was already destroyed.

Destroying of m_videoOutputBin decreases refcounter for m_videoSink,
since the video sink is owned by m_videoOutputBin.

Fixes: QTBUG-79753
Change-Id: I2fcbd19372caf46adf2ae1ed2e5a7d0ee70040ad
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
---
 src/gsttools/qgstreamerplayersession.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp
index c0998d7ae..05e419b10 100644
--- a/src/gsttools/qgstreamerplayersession.cpp
+++ b/src/gsttools/qgstreamerplayersession.cpp
@@ -252,8 +252,11 @@ void QGstreamerPlayerSession::resetElements()
     resetGstObject(m_nullVideoSink);
     resetGstObject(m_videoOutputBin);
 
+    m_audioSink = nullptr;
     m_volumeElement = nullptr;
     m_videoIdentity = nullptr;
+    m_pendingVideoSink = nullptr;
+    m_videoSink = nullptr;
 }
 
 GstElement *QGstreamerPlayerSession::playbin() const
-- 
2.16.3