From 0babd4d6e84f7cbd67c0f838ce38ecdaceb6f336 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 23 Nov 2021 13:46:46 +0800 Subject: [PATCH] UI: fix cameraview crash after going offroad in settings window (#23009) old-commit-hash: c1f617db46e3ed0aa9993dadd278f4f0c0efef6b --- selfdrive/ui/qt/widgets/cameraview.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index 1daabd7d1e..6cc26a0ca4 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -153,16 +153,21 @@ void CameraViewWidget::initializeGL() { void CameraViewWidget::showEvent(QShowEvent *event) { latest_frame = nullptr; - vipc_thread = new QThread(); - connect(vipc_thread, &QThread::started, [=]() { vipcThread(); }); - connect(vipc_thread, &QThread::finished, vipc_thread, &QObject::deleteLater); - vipc_thread->start(); + if (!vipc_thread) { + vipc_thread = new QThread(); + connect(vipc_thread, &QThread::started, [=]() { vipcThread(); }); + connect(vipc_thread, &QThread::finished, vipc_thread, &QObject::deleteLater); + vipc_thread->start(); + } } void CameraViewWidget::hideEvent(QHideEvent *event) { - vipc_thread->requestInterruption(); - vipc_thread->quit(); - vipc_thread->wait(); + if (vipc_thread) { + vipc_thread->requestInterruption(); + vipc_thread->quit(); + vipc_thread->wait(); + vipc_thread = nullptr; + } } void CameraViewWidget::updateFrameMat(int w, int h) {