wxTaskBarIcon seems no longer to work on new-ish Gnome (e.g. the Ubuntu 18.04 one...
[dcpomatic.git] / src / tools / dcpomatic_server.cc
index d29ac0a6367ff56a0314f217b3314936d3438114..727983b5ac2ba41992e220950f15f0c53827e6b8 100644 (file)
@@ -210,12 +210,7 @@ public:
 #ifdef DCPOMATIC_WINDOWS
                wxIcon icon (std_to_wx ("id"));
 #else
-#ifdef DCPOMATIC_LINUX
-               wxBitmap bitmap (wxString::Format (wxT ("%s/dcpomatic2_server_small.png"), std_to_wx (shared_path().string())), wxBITMAP_TYPE_PNG);
-#endif
-#ifdef DCPOMATIC_OSX
                wxBitmap bitmap (wxString::Format (wxT ("%s/dcpomatic_small.png"), std_to_wx (shared_path().string())), wxBITMAP_TYPE_PNG);
-#endif
                wxIcon icon;
                icon.CopyFromBitmap (bitmap);
 #endif
@@ -286,7 +281,19 @@ private:
                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();
+
+#ifdef DCPOMATIC_LINUX
+               StatusDialog* d = new StatusDialog ();
+               d->Show ();
+#else
                _icon = new TaskBarIcon;
+#endif
                _thread = new thread (bind (&App::main_thread, this));
 
                Bind (wxEVT_TIMER, boost::bind (&App::check, this));