From: Steinar H. Gunderson Date: Wed, 10 May 2017 19:32:38 +0000 (+0200) Subject: Fix issues with shutdown happening without a context. X-Git-Tag: 1.6.0~27 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8e1a85982b55de58305476055dc4037be063be80;p=nageru Fix issues with shutdown happening without a context. Should also be cleaner with not having to delete and recreate the Analyzer all the time. --- diff --git a/analyzer.cpp b/analyzer.cpp index 70b75f9..a73058f 100644 --- a/analyzer.cpp +++ b/analyzer.cpp @@ -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() diff --git a/analyzer.h b/analyzer.h index ed2a621..6c74906 100644 --- a/analyzer.h +++ b/analyzer.h @@ -26,6 +26,7 @@ class Analyzer : public QMainWindow public: Analyzer(); ~Analyzer(); + void mixer_shutting_down(); private: void grab_clicked(); diff --git a/mainwindow.cpp b/mainwindow.cpp index b1071fe..fedd180 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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) diff --git a/mainwindow.h b/mainwindow.h index 302e309..13cbedd 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -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);