summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/audioengine.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-10-01 15:33:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-10-01 15:33:23 +0000
commita0d4c9b392d021218f5a0e1b79d0011f7191134c (patch)
tree0ef3e66e19869e5f25507db488e93903c03726f2 /libs/ardour/ardour/audioengine.h
parent49a9fa20a56c6f5607e7bcf209985a67972c3f31 (diff)
merge 5674:5682 and 5689-5694 from mixbus branch
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5695 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/audioengine.h')
-rw-r--r--libs/ardour/ardour/audioengine.h34
1 files changed, 22 insertions, 12 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index 6ba141248c..2d2acfed27 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -76,26 +76,31 @@ class AudioEngine : public sigc::trackable
bool get_sync_offset (nframes_t& offset) const;
nframes_t frames_since_cycle_start () {
- if (!_running || !_jack) return 0;
- return jack_frames_since_cycle_start (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_frames_since_cycle_start (_priv_jack);
}
nframes_t frame_time () {
- if (!_running || !_jack) return 0;
- return jack_frame_time (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_frame_time (_priv_jack);
}
nframes_t transport_frame () const {
- if (!_running || !_jack) return 0;
- return jack_get_current_transport_frame (_jack);
+ const jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_get_current_transport_frame (_priv_jack);
}
int request_buffer_size (nframes_t);
nframes_t set_monitor_check_interval (nframes_t);
+ nframes_t processed_frames() const { return _processed_frames; }
float get_cpu_load() {
- if (!_running || !_jack) return 0;
- return jack_cpu_load (_jack);
+ jack_client_t* _priv_jack = _jack;
+ if (!_running || !_priv_jack) return 0;
+ return jack_cpu_load (_priv_jack);
}
void set_session (Session *);
@@ -172,7 +177,7 @@ class AudioEngine : public sigc::trackable
bool freewheeling() const { return _freewheeling; }
/* this signal is sent for every process() cycle while freewheeling.
- the regular process() call to session->process() is not made.
+_ the regular process() call to session->process() is not made.
*/
sigc::signal<int,nframes_t> Freewheel;
@@ -201,9 +206,14 @@ class AudioEngine : public sigc::trackable
std::string make_port_name_relative (std::string);
std::string make_port_name_non_relative (std::string);
+ static AudioEngine* instance() { return _instance; }
+ void died ();
+
private:
+ static AudioEngine* _instance;
+
ARDOUR::Session* session;
- jack_client_t* _jack;
+ jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */
std::string jack_client_name;
Glib::Mutex _process_lock;
Glib::Cond session_removed;
@@ -252,10 +262,10 @@ class AudioEngine : public sigc::trackable
int jack_bufsize_callback (nframes_t);
int jack_sample_rate_callback (nframes_t);
- static void halted (void *);
-
int connect_to_jack (std::string client_name);
+ static void halted (void *);
+
void meter_thread ();
void start_metering_thread ();
void stop_metering_thread ();