]> git.sesse.net Git - nageru/commitdiff
Fix issues with shutdown happening without a context.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 10 May 2017 19:32:38 +0000 (21:32 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 10 May 2017 19:32:38 +0000 (21:32 +0200)
Should also be cleaner with not having to delete and recreate
the Analyzer all the time.

analyzer.cpp
analyzer.h
mainwindow.cpp
mainwindow.h

index 70b75f9fe9f8390e3979f2a3ec1dbbb13f930e17..a73058f5714118bc8ececbad0d88d8de70c1ed30 100644 (file)
@@ -71,18 +71,23 @@ Analyzer::Analyzer()
 
 Analyzer::~Analyzer()
 {
+       delete_context(context);
+       delete surface;
+}
+
+void Analyzer::mixer_shutting_down()
+{
+       ui->display->shutdown();
+
        if (!make_current(context, surface)) {
                printf("oops\n");
                exit(1);
        }
        glDeleteBuffers(1, &pbo);
        check_error();
-       ui->display->shutdown();
        if (resource_pool != nullptr) {
                resource_pool->clean_context();
        }
-       delete_context(context);
-       delete surface;
 }
 
 void Analyzer::grab_clicked()
index ed2a621b8ac9a9005efb75cf675b83f61d840d18..6c7490653b506de489436d60c78cab985d99a873 100644 (file)
@@ -26,6 +26,7 @@ class Analyzer : public QMainWindow
 public:
        Analyzer();
        ~Analyzer();
+       void mixer_shutting_down();
 
 private:
        void grab_clicked();
index b1071fef4ed005adf24e84bdf4f21ead2de1307e..fedd18086157c39421f89d33f4bd882a600dfbe3 100644 (file)
@@ -382,6 +382,8 @@ void MainWindow::mixer_created(Mixer *mixer)
        midi_mapper.refresh_lights();
        midi_mapper.start_thread();
 
+       analyzer.reset(new Analyzer);
+
        struct sigaction act;
        memset(&act, 0, sizeof(act));
        act.sa_handler = schedule_cut_signal;
@@ -558,7 +560,7 @@ void MainWindow::mixer_shutting_down()
                display->display->shutdown();
        }
 
-       analyzer.reset();
+       analyzer->mixer_shutting_down();
 }
 
 void MainWindow::cut_triggered()
@@ -597,7 +599,6 @@ void MainWindow::about_triggered()
 
 void MainWindow::open_analyzer_triggered()
 {
-       analyzer.reset(new Analyzer);
        analyzer->show();
 }
 
@@ -1302,6 +1303,12 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event)
        return false;
 }
 
+void MainWindow::closeEvent(QCloseEvent *event)
+{
+       analyzer->hide();
+       event->accept();
+}
+
 namespace {
 
 double srgb_to_linear(double x)
index 302e30967d4bdb031e3c311eab2445c8a034ccdf..13cbedd1bd2bfa1a0e87b3d6178cbf608842ef22 100644 (file)
@@ -122,6 +122,7 @@ private:
        void setup_audio_miniview();
        void setup_audio_expanded_view();
        bool eventFilter(QObject *watched, QEvent *event) override;
+       void closeEvent(QCloseEvent *event) override;
        void set_white_balance(int channel_number, int x, int y);
        void update_cutoff_labels(float cutoff_hz);
        void update_eq_label(unsigned bus_index, EQBand band, float gain_db);