summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-04-16 11:12:42 +0200
committerLars Knoll <lars.knoll@qt.io>2021-04-19 11:07:33 +0000
commitaaeb7801e347500ed56f921242b6f90a01775379 (patch)
treeb51ef14ea5bd9eacb6467474bb6eae4fb9ea24da /src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
parent126c65264ec2999da8a97291c0a263a396e3fde6 (diff)
Various reliability bugfixes
Fix crashes due to dangling pointers. On gstreamer avoid using message filters when we do not need them. Change-Id: I1bce271dda4b5efb3913954deb719542288b9b12 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp')
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp b/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
index ef059c8b7..57753f53d 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
+++ b/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
@@ -68,20 +68,16 @@ QGstreamerVideoOutput::~QGstreamerVideoOutput()
void QGstreamerVideoOutput::setVideoSink(QVideoSink *sink)
{
- auto *videoSink = static_cast<QGstreamerVideoSink *>(sink->platformVideoSink());
+ auto *videoSink = sink ? static_cast<QGstreamerVideoSink *>(sink->platformVideoSink()) : nullptr;
if (videoSink == m_videoWindow)
return;
if (m_videoWindow) {
- gstPipeline.removeMessageFilter(static_cast<QGstreamerSyncMessageFilter *>(m_videoWindow));
- gstPipeline.removeMessageFilter(static_cast<QGstreamerBusMessageFilter *>(m_videoWindow));
disconnect(m_videoWindow, SIGNAL(sinkChanged()), this, SLOT(sinkChanged()));
}
m_videoWindow = videoSink;
if (m_videoWindow) {
- gstPipeline.installMessageFilter(static_cast<QGstreamerSyncMessageFilter *>(m_videoWindow));
- gstPipeline.installMessageFilter(static_cast<QGstreamerBusMessageFilter *>(m_videoWindow));
connect(m_videoWindow, SIGNAL(sinkChanged()), this, SLOT(sinkChanged()));
}
sinkChanged();