summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-05-21 15:03:04 +0200
committerLars Knoll <lars.knoll@qt.io>2021-05-23 14:04:05 +0000
commite4bf3c4421e09d1ce9abc6d79b07dfa9f43cfb9d (patch)
treef726167ae538b0749e082f6361e6c6022b834939 /src/multimedia
parentfaaa989d87831b2d287e6170af4a44cdef087780 (diff)
Fix use-after-free errors
Make sure we tell the QVideoSink if it's source is being deleted. Change-Id: Iac7541d47167b56eb1567e656e9717b035010e33 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp1
-rw-r--r--src/multimedia/recording/qmediacapturesession.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 02805469b..60d15f9e6 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -212,6 +212,7 @@ QMediaPlayer::~QMediaPlayer()
// when a receiver is already destroyed.
disconnect();
+ d->setVideoSink(nullptr);
delete d->control;
}
diff --git a/src/multimedia/recording/qmediacapturesession.cpp b/src/multimedia/recording/qmediacapturesession.cpp
index 6e9df9c8d..b80c7910f 100644
--- a/src/multimedia/recording/qmediacapturesession.cpp
+++ b/src/multimedia/recording/qmediacapturesession.cpp
@@ -124,6 +124,7 @@ QMediaCaptureSession::~QMediaCaptureSession()
d_ptr->encoder->setCaptureSession(nullptr);
if (d_ptr->imageCapture)
d_ptr->imageCapture->setCaptureSession(nullptr);
+ d_ptr->setVideoSink(nullptr);
delete d_ptr->captureSession;
delete d_ptr;
}