From 096203ac88620054e464603dd5bb68709adcf5ef Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Fri, 8 May 2020 22:36:19 -0700 Subject: [PATCH] visualisations: Fix close action Pressing the close button on the window sends a close event, where other methods of exiting visualization just hide the window. If shown again after close, the window will be empty. To fix this, handle and reject the close event. Call hide instead. --- src/visualisations/visualisationcontainer.cpp | 9 +++++++++ src/visualisations/visualisationcontainer.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/visualisations/visualisationcontainer.cpp b/src/visualisations/visualisationcontainer.cpp index 8d3401ea6..f04edb16c 100644 --- a/src/visualisations/visualisationcontainer.cpp +++ b/src/visualisations/visualisationcontainer.cpp @@ -21,6 +21,7 @@ #include "visualisationoverlay.h" #include "visualisationselector.h" #include "engines/gstengine.h" +#include "core/logging.h" #include "ui/iconloader.h" #include "ui/screensaver.h" @@ -151,6 +152,7 @@ void VisualisationContainer::SetEngine(GstEngine* engine) { } void VisualisationContainer::showEvent(QShowEvent* e) { + qLog(Debug) << "Showing visualization"; if (!initialised_) { if (!QGLFormat::hasOpenGL()) { hide(); @@ -171,12 +173,19 @@ void VisualisationContainer::showEvent(QShowEvent* e) { } void VisualisationContainer::hideEvent(QHideEvent* e) { + qLog(Debug) << "Hiding visualization"; QGraphicsView::hideEvent(e); update_timer_.stop(); if (engine_) engine_->RemoveBufferConsumer(vis_); } +void VisualisationContainer::closeEvent(QCloseEvent* e) { + // Don't close the window. Just hide it. + e->ignore(); + hide(); +} + void VisualisationContainer::resizeEvent(QResizeEvent* e) { QGraphicsView::resizeEvent(e); SizeChanged(); diff --git a/src/visualisations/visualisationcontainer.h b/src/visualisations/visualisationcontainer.h index 6c521198d..9aafa2e63 100644 --- a/src/visualisations/visualisationcontainer.h +++ b/src/visualisations/visualisationcontainer.h @@ -60,6 +60,7 @@ class VisualisationContainer : public QGraphicsView { // QWidget void showEvent(QShowEvent* e); void hideEvent(QHideEvent* e); + void closeEvent(QCloseEvent* e); void resizeEvent(QResizeEvent* e); void timerEvent(QTimerEvent* e); void mouseMoveEvent(QMouseEvent* e);