diff options
Diffstat (limited to 'dev-qt')
-rw-r--r-- | dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch | 40 | ||||
-rw-r--r-- | dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild | 70 |
2 files changed, 110 insertions, 0 deletions
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 000000000000..ffcdc89c1d3a --- /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.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 + 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 000000000000..767ac97515a5 --- /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 +} |