commit:     bb3337783ed47ebf099beeb28e378c2651ddc0ec
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 16 10:49:23 2019 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Nov 20 21:20:41 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb333778

dev-qt/qtmultimedia: Fix crash if video sink is used when destroyed

Package-Manager: Portage-2.3.79, Repoman-2.3.17
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../qtmultimedia-5.13.2-gstreamer-crash.patch      | 40 +++++++++++++
 dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild  | 70 ++++++++++++++++++++++
 2 files changed, 110 insertions(+)

diff --git 
a/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch 
b/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch
new file mode 100644
index 00000000000..ffcdc89c1d3
--- /dev/null
+++ b/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch
@@ -0,0 +1,40 @@
+From 4d251f072c6f97b4cf4618103e4e857e499c5ed7 Mon Sep 17 00:00:00 2001
+From: VaL Doroshchuk <valentyn.doroshc...@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.pochept...@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
+

diff --git a/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild 
b/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild
new file mode 100644
index 00000000000..767ac97515a
--- /dev/null
+++ b/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit qt5-build
+
+DESCRIPTION="Multimedia (audio, video, radio, camera) library for the Qt5 
framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+fi
+
+IUSE="alsa gles2 gstreamer openal pulseaudio qml widgets"
+
+RDEPEND="
+       ~dev-qt/qtcore-${PV}
+       ~dev-qt/qtgui-${PV}[gles2=]
+       ~dev-qt/qtnetwork-${PV}
+       alsa? ( media-libs/alsa-lib )
+       gstreamer? (
+               dev-libs/glib:2
+               media-libs/gstreamer:1.0
+               media-libs/gst-plugins-bad:1.0
+               media-libs/gst-plugins-base:1.0
+       )
+       pulseaudio? ( media-sound/pulseaudio[glib] )
+       qml? (
+               ~dev-qt/qtdeclarative-${PV}
+               gles2? ( ~dev-qt/qtgui-${PV}[egl] )
+               openal? ( media-libs/openal )
+       )
+       widgets? (
+               ~dev-qt/qtopengl-${PV}
+               ~dev-qt/qtwidgets-${PV}[gles2=]
+       )
+"
+DEPEND="${RDEPEND}
+       gstreamer? ( x11-base/xorg-proto )
+"
+
+PATCHES=( "${FILESDIR}/${P}-gstreamer-crash.patch" ) # QTBUG-79753
+
+src_prepare() {
+       sed -i -e '/CONFIG\s*+=/ s/optimize_full//' \
+               src/multimedia/multimedia.pro || die
+
+       qt_use_disable_config openal openal \
+               src/imports/imports.pro
+
+       qt_use_disable_mod qml quick \
+               src/src.pro \
+               src/plugins/plugins.pro
+
+       qt_use_disable_mod widgets widgets \
+               src/src.pro \
+               src/gsttools/gsttools.pro \
+               src/plugins/gstreamer/common.pri
+
+       qt5-build_src_prepare
+}
+
+src_configure() {
+       local myqmakeargs=(
+               --
+               $(qt_use alsa)
+               $(qt_use gstreamer)
+               $(qt_use pulseaudio)
+       )
+       qt5-build_src_configure
+}

Reply via email to