+ wxInitAllImageHandlers ();
+
+ server_log.reset (new ServerLog);
+ server_log->set_types (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR);
+ dcpomatic_log = server_log;
+
+ Config::FailedToLoad.connect (boost::bind (&App::config_failed_to_load, this));
+ Config::Warning.connect (boost::bind (&App::config_warning, this, _1));
+
+ auto splash = maybe_show_splash ();
+
+ dcpomatic_setup_path_encoding ();
+ dcpomatic_setup_i18n ();
+ dcpomatic_setup ();
+ Config::drop ();
+
+ signal_manager = new wxSignalManager (this);
+ Bind (wxEVT_IDLE, boost::bind (&App::idle, this));
+
+ /* Bad things happen (on Linux at least) if the config is reloaded by main_thread;
+ it seems like there's a race which results in the locked_sstream mutex being
+ locked before it is initialised. Calling Config::instance() here loads the config
+ again in this thread, which seems to work around the problem.
+ */
+ Config::instance();
+
+ status_dialog = new StatusDialog ();
+#ifdef DCPOMATIC_LINUX
+ status_dialog->Show ();
+#else