From: Steinar H. Gunderson Date: Thu, 29 Oct 2015 20:44:39 +0000 (+0100) Subject: Move the audio level logic into MainWindow, where it has a much better home than... X-Git-Tag: 1.0.0~207 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=35624172bcc406eca72ac3d2de5754c214df8080 Move the audio level logic into MainWindow, where it has a much better home than GLWidget. --- diff --git a/glwidget.cpp b/glwidget.cpp index 075106a..3cd6358 100644 --- a/glwidget.cpp +++ b/glwidget.cpp @@ -48,13 +48,7 @@ void GLWidget::initializeGL() static std::once_flag flag; std::call_once(flag, [this]{ global_mixer = new Mixer(QGLFormat::toSurfaceFormat(format())); - global_mixer->set_audio_level_callback([this](float level_lufs, float peak_db){ - global_vu_meter->set_level(level_lufs); - - char buf[256]; - snprintf(buf, sizeof(buf), "%.1f", peak_db); - global_peak_display->setText(buf); - }); + global_mainwindow->mixer_created(global_mixer); global_mixer->start(); }); global_mixer->set_frame_ready_callback(output, [this]{ diff --git a/mainwindow.cpp b/mainwindow.cpp index afc2194..4dc0608 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -16,9 +16,12 @@ using namespace std; Q_DECLARE_METATYPE(std::vector); +MainWindow *global_mainwindow = nullptr; + MainWindow::MainWindow() : ui(new Ui::MainWindow) { + global_mainwindow = this; ui->setupUi(this); ui->me_live->set_output(Mixer::OUTPUT_LIVE); @@ -78,10 +81,6 @@ MainWindow::MainWindow() qRegisterMetaType>("std::vector"); connect(ui->preview1, SIGNAL(transition_names_updated(std::vector)), this, SLOT(set_transition_names(std::vector))); - - // global_mixer does not exist yet, so need to delay the actual hookups. - global_vu_meter = ui->vu_meter; - global_peak_display = ui->peak_display; } void MainWindow::resizeEvent(QResizeEvent* event) @@ -93,6 +92,17 @@ void MainWindow::resizeEvent(QResizeEvent* event) QMetaObject::invokeMethod(this, "relayout", Qt::QueuedConnection); } +void MainWindow::mixer_created(Mixer *mixer) +{ + mixer->set_audio_level_callback([this](float level_lufs, float peak_db){ + ui->vu_meter->set_level(level_lufs); + + char buf[256]; + snprintf(buf, sizeof(buf), "%.1f", peak_db); + ui->peak_display->setText(buf); + }); +} + void MainWindow::relayout() { int width = size().width(); diff --git a/mainwindow.h b/mainwindow.h index b0e2689..6f26668 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -9,6 +9,7 @@ namespace Ui { class MainWindow; } // namespace Ui +class Mixer; class QPushButton; class MainWindow : public QMainWindow @@ -17,7 +18,8 @@ class MainWindow : public QMainWindow public: MainWindow(); - void resizeEvent(QResizeEvent* event) override; + void resizeEvent(QResizeEvent *event) override; + void mixer_created(Mixer *mixer); public slots: void transition_clicked(int transition_number); @@ -30,4 +32,6 @@ private: QPushButton *transition_btn1, *transition_btn2, *transition_btn3; }; +extern MainWindow *global_mainwindow; + #endif diff --git a/vumeter.h b/vumeter.h index 61fbf23..3492f77 100644 --- a/vumeter.h +++ b/vumeter.h @@ -27,7 +27,4 @@ private: float level_lufs = -HUGE_VAL; }; -extern VUMeter *global_vu_meter; -extern QLabel *global_peak_display; - #endif