fix redrawing of canvas with an optimized build
[ardour.git] / libs / ardour / graph.cc
index 30c9a167a939cfc62075e92c9f7542a65ca70b89..d183bcd7d271e41bcfa839dd3a4c4d281111e9d1 100644 (file)
@@ -19,7 +19,6 @@
 */
 #include <stdio.h>
 #include <cmath>
-#include <xmmintrin.h>
 
 #include "pbd/compose.h"
 #include "pbd/debug_rt_alloc.h"
@@ -97,29 +96,24 @@ Graph::reset_thread_list ()
            number of threads.
         */
 
-        if (_thread_list.size() == num_threads) {
+        if (AudioEngine::instance()->process_thread_count() == num_threads) {
                 return;
         }
 
         Glib::Threads::Mutex::Lock lm (_session.engine().process_lock());
-       pthread_t a_thread;
 
-        if (!_thread_list.empty()) {
+        if (AudioEngine::instance()->process_thread_count() != 0) {
                 drop_threads ();
         }
 
-       if (AudioEngine::instance()->create_process_thread (boost::bind (&Graph::main_thread, this), &a_thread, 100000) != 0) {
+       if (AudioEngine::instance()->create_process_thread (boost::bind (&Graph::main_thread, this)) != 0) {
                throw failed_constructor ();
        }
 
-       _thread_list.push_back (a_thread);
-
         for (uint32_t i = 1; i < num_threads; ++i) {
-               if (AudioEngine::instance()->create_process_thread (boost::bind (&Graph::helper_thread, this), &a_thread, 100000) != 0) {
+               if (AudioEngine::instance()->create_process_thread (boost::bind (&Graph::helper_thread, this))) {
                        throw failed_constructor ();
                }
-               
-               _thread_list.push_back (a_thread);
         }
 }
 
@@ -141,18 +135,15 @@ Graph::drop_threads ()
 {
         _quit_threads = true;
 
-        for (unsigned int i=0; i< _thread_list.size(); i++) {
+        uint32_t thread_count = AudioEngine::instance()->process_thread_count ();
+
+        for (unsigned int i=0; i < thread_count; i++) {
                _execution_sem.signal ();
         }
 
         _callback_start_sem.signal ();
 
-        for (list<pthread_t>::iterator i = _thread_list.begin(); i != _thread_list.end(); ++i) {
-                void* status;
-                pthread_join (*i, &status);
-        }
-
-        _thread_list.clear ();
+       AudioEngine::instance()->join_process_threads ();
 
        _execution_tokens = 0;
 
@@ -585,10 +576,5 @@ Graph::process_one_route (Route* route)
 bool
 Graph::in_process_thread () const
 {
-       for (list<pthread_t>::const_iterator i = _thread_list.begin (); i != _thread_list.end(); ++i) {
-               if (*i == pthread_self()) {
-                       return true;
-               }
-       }
-       return false;
+       return AudioEngine::instance()->in_process_thread ();
 }