From 29fc190374dddd2569e6863fb480669a7af72e44 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 10 May 2017 20:14:59 +0200 Subject: [PATCH] Fix crashes on exit. --- analyzer.cpp | 1 + glwidget.cpp | 4 ++-- glwidget.h | 2 +- mainwindow.cpp | 9 ++++++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/analyzer.cpp b/analyzer.cpp index 2d76223..70b75f9 100644 --- a/analyzer.cpp +++ b/analyzer.cpp @@ -77,6 +77,7 @@ Analyzer::~Analyzer() } glDeleteBuffers(1, &pbo); check_error(); + ui->display->shutdown(); if (resource_pool != nullptr) { resource_pool->clean_context(); } diff --git a/glwidget.cpp b/glwidget.cpp index 43517fa..fb5fe99 100644 --- a/glwidget.cpp +++ b/glwidget.cpp @@ -42,15 +42,15 @@ GLWidget::GLWidget(QWidget *parent) GLWidget::~GLWidget() { - global_mixer->remove_frame_ready_callback(output, this); } -void GLWidget::clean_context() +void GLWidget::shutdown() { if (resource_pool != nullptr) { makeCurrent(); resource_pool->clean_context(); } + global_mixer->remove_frame_ready_callback(output, this); } void GLWidget::initializeGL() diff --git a/glwidget.h b/glwidget.h index 12757fc..01cbbd9 100644 --- a/glwidget.h +++ b/glwidget.h @@ -37,7 +37,7 @@ public: this->output = output; } - void clean_context(); + void shutdown(); protected: void initializeGL() override; diff --git a/mainwindow.cpp b/mainwindow.cpp index bff32ab..b1071fe 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -551,11 +551,14 @@ void MainWindow::setup_audio_expanded_view() void MainWindow::mixer_shutting_down() { - ui->me_live->clean_context(); - ui->me_preview->clean_context(); + ui->me_live->shutdown(); + ui->me_preview->shutdown(); + for (Ui::Display *display : previews) { - display->display->clean_context(); + display->display->shutdown(); } + + analyzer.reset(); } void MainWindow::cut_triggered() -- 2.39.2