Handle exceptions thrown from ServerFinder.
[dcpomatic.git] / src / tools / dcpomatic.cc
index 66f795ddf4a10de1d38edc6e771809e301650045..891c4623ca9b6e1ea1ac995d41108d119468e72f 100644 (file)
@@ -54,6 +54,7 @@
 #include "lib/cinema.h"
 #include "lib/kdm.h"
 #include "lib/send_kdm_email_job.h"
+#include "lib/server_finder.h"
 
 using std::cout;
 using std::string;
@@ -632,8 +633,12 @@ class App : public wxApp
                f->Show ();
 
                ui_signaller = new wxUISignaller (this);
-               this->Bind (wxEVT_IDLE, boost::bind (&App::idle, this));
+               Bind (wxEVT_IDLE, boost::bind (&App::idle, this));
 
+               Bind (wxEVT_TIMER, boost::bind (&App::check, this));
+               _timer.reset (new wxTimer (this));
+               _timer->Start (1000);
+               
                return true;
        }
        catch (exception& e)
@@ -670,6 +675,17 @@ class App : public wxApp
        {
                ui_signaller->ui_idle ();
        }
+
+       void check ()
+       {
+               try {
+                       ServerFinder::instance()->rethrow ();
+               } catch (exception& e) {
+                       error_dialog (0, std_to_wx (e.what ()));
+               }
+       }
+
+       shared_ptr<wxTimer> _timer;
 };
 
 IMPLEMENT_APP (App)