Fix hang in client_server tests.
[dcpomatic.git] / test / client_server_test.cc
index fab9411abb2ff528692ce86aca756f85b2543a6f..5e4c2540e7b2fa3b5382cfa8571756d484c2b1c8 100644 (file)
@@ -115,7 +115,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_rgb)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -135,6 +135,9 @@ BOOST_AUTO_TEST_CASE (client_server_test_rgb)
                delete *i;
        }
 
+       server->stop ();
+       server_thread->join ();
+       delete server_thread;
        delete server;
 }
 
@@ -194,7 +197,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_yuv)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -214,6 +217,9 @@ BOOST_AUTO_TEST_CASE (client_server_test_yuv)
                delete *i;
        }
 
+       server_thread->join ();
+       delete server_thread;
+
        delete server;
 }
 
@@ -284,7 +290,7 @@ BOOST_AUTO_TEST_CASE (client_server_test_j2k)
 
        EncodeServer* server = new EncodeServer (log, true, 2);
 
-       new thread (boost::bind (&EncodeServer::run, server));
+       thread* server_thread = new thread (boost::bind (&EncodeServer::run, server));
 
        /* Let the server get itself ready */
        dcpomatic_sleep (1);
@@ -304,5 +310,8 @@ BOOST_AUTO_TEST_CASE (client_server_test_j2k)
                delete *i;
        }
 
+       server->stop ();
+       server_thread->join ();
+       delete server_thread;
        delete server;
 }