Try again to fix ui signalling during tests.
[dcpomatic.git] / test / test.cc
index 2334523a1337696f74e271bec138503159343fb1..154510738e3200bd4ebc1b15cb52ce58763a42b0 100644 (file)
@@ -39,6 +39,16 @@ using std::cerr;
 using std::list;
 using boost::shared_ptr;
 
+class TestUISignaller : public UISignaller
+{
+public:
+       /* No wakes in tests: we call ui_idle ourselves */
+       void wake_ui ()
+       {
+
+       }
+};
+
 struct TestConfig
 {
        TestConfig()
@@ -46,13 +56,13 @@ struct TestConfig
                dcpomatic_setup();
 
                Config::instance()->set_num_local_encoding_threads (1);
-               Config::instance()->set_servers (vector<ServerDescription*> ());
+               Config::instance()->set_servers (vector<ServerDescription> ());
                Config::instance()->set_server_port (61920);
                Config::instance()->set_default_dci_metadata (DCIMetadata ());
                Config::instance()->set_default_container (static_cast<Ratio*> (0));
                Config::instance()->set_default_dcp_content_type (static_cast<DCPContentType*> (0));
 
-               ui_signaller = new UISignaller ();
+               ui_signaller = new TestUISignaller ();
        }
 };
 
@@ -141,7 +151,9 @@ void
 wait_for_jobs ()
 {
        JobManager* jm = JobManager::instance ();
-       while (jm->work_to_do ()) {}
+       while (jm->work_to_do ()) {
+               ui_signaller->ui_idle ();
+       }
        if (jm->errors ()) {
                for (list<shared_ptr<Job> >::iterator i = jm->_jobs.begin(); i != jm->_jobs.end(); ++i) {
                        if ((*i)->finished_in_error ()) {
@@ -153,6 +165,5 @@ wait_for_jobs ()
                
        BOOST_CHECK (!jm->errors());
 
-       /* Hack: wait for ui_signaller signals to fire */
-       dcpomatic_sleep (1);
+       ui_signaller->ui_idle ();
 }