Merge branch '2.0' of ssh://git.carlh.net/home/carl/git/dcpomatic2 into 2.0
[dcpomatic.git] / src / lib / server_finder.cc
index ecda385eb4782c69f0e09922840f61ecd44707a6..3eec6597b55df1d92125b1785ad2998a104adb33 100644 (file)
@@ -54,7 +54,7 @@ ServerFinder::~ServerFinder ()
 {
        _stop = true;
 
-       _search_thread->interrupt ();
+       _search_condition.notify_all ();
        _search_thread->join ();
 
        _listen_io_service.stop ();
@@ -106,11 +106,8 @@ try
                        }
                }
 
-               try {
-                       boost::thread::sleep (boost::get_system_time() + boost::posix_time::seconds (10));
-               } catch (boost::thread_interrupted& e) {
-                       return;
-               }
+               boost::mutex::scoped_lock lm (_search_condition_mutex);
+               _search_condition.timed_wait (lm, boost::get_system_time() + boost::posix_time::seconds (10));
        }
 }
 catch (...)
@@ -224,5 +221,12 @@ ServerFinder::config_changed (Config::Property what)
                        _servers.clear ();
                }
                ServersListChanged ();
+               search_now ();
        }
 }
+
+void
+ServerFinder::search_now ()
+{
+       _search_condition.notify_all ();
+}