X-Git-Url: https://git.sesse.net/?p=nageru;a=blobdiff_plain;f=main.cpp;fp=main.cpp;h=65eade924ecc15e559c655e9fa47a9864ac65bdb;hp=afac03ed4d3ea81e4c2c813d3bb0b119a097ef07;hb=b68d8a25951faf5b967b7a35fa0a363b4b68fbc0;hpb=25ea462c2847313afd702cea1db29199b845fbd4 diff --git a/main.cpp b/main.cpp index afac03e..65eade9 100644 --- a/main.cpp +++ b/main.cpp @@ -13,15 +13,40 @@ extern "C" { #include #include +#include +#include +#include +#include + #include "basic_stats.h" +#include "nageru_cef_app.h" #include "context.h" #include "flags.h" #include "image_input.h" #include "mainwindow.h" #include "mixer.h" +CefRefPtr cef_app; + int main(int argc, char *argv[]) { +#ifdef HAVE_CEF + // Let CEF have first priority on parsing the command line, because we might be + // launched as a CEF sub-process. + CefMainArgs main_args(argc, argv); + cef_app = CefRefPtr(new NageruCefApp()); + int err = CefExecuteProcess(main_args, cef_app.get(), nullptr); + if (err >= 0) { + return err; + } + + // CEF wants to use GLib for its main loop, which interferes with Qt's use of it. + // The alternative is trying to integrate CEF into Qt's main loop, but that requires + // fairly extensive cross-thread communication and that parts of CEF runs on Qt's UI + // thread. + setenv("QT_NO_GLIB", "1", 0); +#endif + parse_flags(PROGRAM_NAGERU, argc, argv); if (global_flags.va_display.empty() ||