]> git.sesse.net Git - nageru/commitdiff
Fix crashes on exit.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 10 May 2017 18:14:59 +0000 (20:14 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 10 May 2017 18:14:59 +0000 (20:14 +0200)
analyzer.cpp
glwidget.cpp
glwidget.h
mainwindow.cpp

index 2d762236755c85128437ff0f261d01ac9b61790e..70b75f9fe9f8390e3979f2a3ec1dbbb13f930e17 100644 (file)
@@ -77,6 +77,7 @@ Analyzer::~Analyzer()
        }
        glDeleteBuffers(1, &pbo);
        check_error();
+       ui->display->shutdown();
        if (resource_pool != nullptr) {
                resource_pool->clean_context();
        }
index 43517fa882cc988e9f66ca66996a9b785d18cff3..fb5fe995719b36112edc8eef315a06ad05a31aa5 100644 (file)
@@ -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()
index 12757fc5bcbc97dbef4535657fa450ef4881b531..01cbbd90eaf4fa84ddf253ab68008e30bc4c5d1d 100644 (file)
@@ -37,7 +37,7 @@ public:
                this->output = output;
        }
 
-       void clean_context();
+       void shutdown();
 
 protected:
        void initializeGL() override;
index bff32ab8333c571ff6bfaa2bee6ecb19a3f298e4..b1071fef4ed005adf24e84bdf4f21ead2de1307e 100644 (file)
@@ -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()