pulling trunk
[ardour.git] / libs / ardour / ardour / audioengine.h
index 9fe3ce54245cf00cd5f666bf3476be5605681969..50bf7dddcceb2b68eb35df0d63d135608ed56f56 100644 (file)
@@ -28,7 +28,9 @@
 #include <string>
 
 #include <sigc++/signal.h>
-#include <pthread.h>
+
+#include <glibmm/thread.h>
+
 #include <ardour/ardour.h>
 #include <jack/jack.h>
 #include <jack/transport.h>
@@ -59,7 +61,7 @@ class AudioEngine : public sigc::trackable
        int start ();
        bool running() const { return _running; }
 
-       PBD::NonBlockingLock& process_lock() { return _process_lock; }
+       Glib::Mutex& process_lock() { return _process_lock; }
 
        jack_nframes_t frame_rate();
        jack_nframes_t frames_per_cycle();
@@ -185,10 +187,10 @@ class AudioEngine : public sigc::trackable
        ARDOUR::Session      *session;
        jack_client_t       *_jack;
        std::string           jack_client_name;
-       PBD::NonBlockingLock  port_lock;
-       PBD::NonBlockingLock _process_lock;
-       PBD::Lock             session_remove_lock;
-       pthread_cond_t        session_removed;
+       Glib::Mutex           port_lock;
+       Glib::Mutex           _process_lock;
+       Glib::Mutex           session_remove_lock;
+    Glib::Cond            session_removed;
        bool                  session_remove_pending;
        bool                 _running;
        bool                 _has_run;
@@ -232,9 +234,13 @@ class AudioEngine : public sigc::trackable
        int  jack_sample_rate_callback (jack_nframes_t);
 
        static void halted (void *);
-       static void meter (Port *port, jack_nframes_t nframes);
 
        int connect_to_jack (std::string client_name);
+
+       void meter_thread ();
+       void start_metering_thread ();
+    Glib::Thread*    m_meter_thread;
+    mutable gint     m_meter_exit;
 };
 
 }; /* namespace ARDOUR */