]> git.sesse.net Git - nageru/blobdiff - mainwindow.cpp
Make the VideoEncoder own the stream audio encoder (and make it unconditionally)...
[nageru] / mainwindow.cpp
index 0f54b5b74297720e5e57906201361bcf3d034fd4..5adae5cd92742b32e9c0533e9f643e3f0b3a69d3 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <math.h>
 #include <stdio.h>
+#include <signal.h>
 #include <algorithm>
 #include <string>
 #include <vector>
@@ -31,6 +32,20 @@ using namespace std::placeholders;
 
 Q_DECLARE_METATYPE(std::vector<std::string>);
 
+namespace {
+
+void schedule_cut_signal(int ignored)
+{
+       global_mixer->schedule_cut();
+}
+
+void quit_signal(int ignored)
+{
+       global_mixer->quit();
+}
+
+}  // namespace
+
 MainWindow *global_mainwindow = nullptr;
 
 MainWindow::MainWindow()
@@ -135,6 +150,17 @@ void MainWindow::mixer_created(Mixer *mixer)
        });
        connect(ui->reset_meters_button, &QPushButton::clicked, this, &MainWindow::reset_meters_button_clicked);
        mixer->set_audio_level_callback(bind(&MainWindow::audio_level_callback, this, _1, _2, _3, _4, _5, _6, _7, _8));
+
+       struct sigaction act;
+       act.sa_handler = schedule_cut_signal;
+       act.sa_flags = SA_RESTART;
+       sigaction(SIGHUP, &act, nullptr);
+
+       // Mostly for debugging. Don't override SIGINT, that's so evil if
+       // shutdown isn't instant.
+       act.sa_handler = quit_signal;
+       act.sa_flags = SA_RESTART;
+       sigaction(SIGUSR1, &act, nullptr);
 }
 
 void MainWindow::mixer_shutting_down()