]> git.sesse.net Git - nageru/blobdiff - nageru/main.cpp
IWYU-fix nageru/*.cpp.
[nageru] / nageru / main.cpp
index d5654a5a07c4ef26bb8924b7fa8cd7f1362cc827..f8b5395f4f9ffceb4cce3a9c65184309b7dfcfe9 100644 (file)
@@ -1,5 +1,6 @@
 extern "C" {
-#include <libavformat/avformat.h>
+#include <libavformat/version.h>
+#include <libavutil/version.h>
 }
 #include <stdbool.h>
 #include <stdio.h>
@@ -15,9 +16,10 @@ extern "C" {
 
 #ifdef HAVE_CEF
 #include <cef_app.h>
-#include <cef_browser.h>
-#include <cef_client.h>
-#include <cef_version.h>
+#endif
+
+#ifdef HAVE_SRT
+#include <srt/srt.h>
 #endif
 
 #include "basic_stats.h"
@@ -26,7 +28,6 @@ extern "C" {
 #endif
 #include "shared/context.h"
 #include "flags.h"
-#include "image_input.h"
 #include "mainwindow.h"
 #include "mixer.h"
 #include "quicksync_encoder.h"
@@ -63,6 +64,9 @@ int main(int argc, char *argv[])
                global_flags.va_display = QuickSyncEncoder::get_usable_va_display();
        }
 
+       // The OpenGL widgets do not work well with the native Wayland integration.
+       setenv("QT_QPA_PLATFORM", "xcb", 0);
+
        if ((global_flags.va_display.empty() ||
             global_flags.va_display[0] != '/') && !global_flags.x264_video_to_disk) {
                // We normally use EGL for zerocopy, but if we use VA against DRM
@@ -74,6 +78,12 @@ int main(int argc, char *argv[])
        av_register_all();
 #endif
 
+#ifdef HAVE_SRT
+       if (global_flags.srt_port >= 0 || !global_flags.srt_destination_host.empty()) {
+               srt_startup();
+       }
+#endif
+
        QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);
 
        QSurfaceFormat fmt;
@@ -95,7 +105,7 @@ int main(int argc, char *argv[])
        global_share_widget = new QGLWidget();
        if (!global_share_widget->isValid()) {
                fprintf(stderr, "Failed to initialize OpenGL. Nageru needs at least OpenGL 3.1 to function properly.\n");
-               exit(1);
+               abort();
        }
 
        MainWindow mainWindow;
@@ -119,9 +129,11 @@ int main(int argc, char *argv[])
        }
 
        int rc = app.exec();
-       global_mixer->quit();
-       mainWindow.mixer_shutting_down();
        delete global_mixer;
-       ImageInput::shutdown_updaters();
+#ifdef HAVE_SRT
+       if (global_flags.srt_port >= 0) {
+               srt_cleanup();
+       }
+#endif
        return rc;
 }