diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-04-16 11:12:42 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-04-19 11:07:33 +0000 |
commit | aaeb7801e347500ed56f921242b6f90a01775379 (patch) | |
tree | b51ef14ea5bd9eacb6467474bb6eae4fb9ea24da /src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp | |
parent | 126c65264ec2999da8a97291c0a263a396e3fde6 (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.cpp | 6 |
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(); |