summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Roquetto <rafael.roquetto@qt.io>2022-03-30 15:37:36 +1000
committerRafael Roquetto <rafael.roquetto@qt.io>2022-04-01 17:44:45 +1000
commit2516f88183b03a971c30ce31364c5eb588e9cd1c (patch)
tree2e0df79adb1b0de4c6ffd7f8e5f59cca80fda92c
parentf0d9de2d3eb9fda682954cb88c2013bf2cfd7f5b (diff)
QVideoWindow: disconnect videoFrameChanged signal when destroying
Prevent signal from invoking methods on a half-destroyed object. It can happen when a video sink is trying to set a default frame prior to the sink itself being destructed, if that destruction is a side-effect of the video window destuctor itself. Change-Id: I49ad1e2d0fe28040bf32648fa76e3de8b08d0f0e Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 71c5377235b9e37be9c0eb25671e23484e289fad) Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io>
-rw-r--r--src/multimedia/video/qvideowindow.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/multimedia/video/qvideowindow.cpp b/src/multimedia/video/qvideowindow.cpp
index 9055b4167..3732fcfde 100644
--- a/src/multimedia/video/qvideowindow.cpp
+++ b/src/multimedia/video/qvideowindow.cpp
@@ -100,6 +100,9 @@ QVideoWindowPrivate::QVideoWindowPrivate(QVideoWindow *q)
QVideoWindowPrivate::~QVideoWindowPrivate()
{
freeTextures();
+
+ QObject::disconnect(m_sink.get(), &QVideoSink::videoFrameChanged,
+ q, &QVideoWindow::setVideoFrame);
}
static const float g_quad[] = {