summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorJesse Chappell <jesse@essej.net>2006-01-06 04:59:17 +0000
committerJesse Chappell <jesse@essej.net>2006-01-06 04:59:17 +0000
commitbd21c474e547d49338ea0efd452895de1e147cd5 (patch)
tree2993bc781777530afc180313c9f69cc898f851e0 /libs/ardour/ardour
parent18844bac7aa0747453ed4d04c4a462f2044a43bb (diff)
committed RWlock fixes to libardour. added hw monitoring fixes from nick_m. minor alsa midi fix and update rate settings.
git-svn-id: svn://localhost/trunk/ardour2@244 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/configuration.h5
-rw-r--r--libs/ardour/ardour/diskstream.h1
-rw-r--r--libs/ardour/ardour/route.h6
-rw-r--r--libs/ardour/ardour/session.h12
-rw-r--r--libs/ardour/ardour/session_diskstream.h2
-rw-r--r--libs/ardour/ardour/session_route.h6
6 files changed, 19 insertions, 13 deletions
diff --git a/libs/ardour/ardour/configuration.h b/libs/ardour/ardour/configuration.h
index 0c42027646..140490d46d 100644
--- a/libs/ardour/ardour/configuration.h
+++ b/libs/ardour/ardour/configuration.h
@@ -117,6 +117,9 @@ class Configuration : public Stateful
string get_midi_port_name();
void set_midi_port_name(string);
+
+ uint32_t get_midi_feedback_interval_ms();
+ void set_midi_feedback_interval_ms (uint32_t);
bool get_use_hardware_monitoring();
void set_use_hardware_monitoring(bool);
@@ -238,6 +241,8 @@ class Configuration : public Stateful
bool use_vst; /* always per-user */
bool quieten_at_speed;
bool quieten_at_speed_is_user;
+ uint32_t midi_feedback_interval_ms;
+ bool midi_feedback_interval_ms_is_user;
XMLNode *key_node;
bool user_configuration;
diff --git a/libs/ardour/ardour/diskstream.h b/libs/ardour/ardour/diskstream.h
index 3c9aa0e0f6..0cdbfd1724 100644
--- a/libs/ardour/ardour/diskstream.h
+++ b/libs/ardour/ardour/diskstream.h
@@ -305,7 +305,6 @@ class DiskStream : public Stateful, public sigc::trackable
id_t _id;
atomic_t _record_enabled;
- bool rec_monitoring_off_for_roll;
AudioPlaylist* _playlist;
double _visible_speed;
double _actual_speed;
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 8f4028c99f..9c0edcdad4 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -140,14 +140,14 @@ class Route : public IO
void flush_redirects ();
template<class T> void foreach_redirect (T *obj, void (T::*func)(Redirect *)) {
- LockMonitor lm (redirect_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (redirect_lock, false, __LINE__, __FILE__);
for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
(obj->*func) (*i);
}
}
Redirect *nth_redirect (uint32_t n) {
- LockMonitor lm (redirect_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (redirect_lock, false, __LINE__, __FILE__);
RedirectList::iterator i;
for (i = _redirects.begin(); i != _redirects.end() && n; ++i, --n);
if (i == _redirects.end()) {
@@ -288,7 +288,7 @@ class Route : public IO
jack_nframes_t _roll_delay;
jack_nframes_t _own_latency;
RedirectList _redirects;
- PBD::NonBlockingLock redirect_lock;
+ PBD::NonBlockingRWLock redirect_lock;
IO *_control_outs;
PBD::NonBlockingLock control_outs_lock;
RouteGroup *_edit_group;
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index b58b0a926b..88f629e516 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -273,7 +273,7 @@ class Session : public sigc::trackable, public Stateful
typedef list<DiskStream *> DiskStreamList;
Session::DiskStreamList disk_streams() const {
- LockMonitor lm (diskstream_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (diskstream_lock, false, __LINE__, __FILE__);
return diskstreams; /* XXX yes, force a copy */
}
@@ -283,7 +283,7 @@ class Session : public sigc::trackable, public Stateful
typedef slist<Route *> RouteList;
RouteList get_routes() const {
- LockMonitor rlock (route_lock, __LINE__, __FILE__);
+ RWLockMonitor rlock (route_lock, false, __LINE__, __FILE__);
return routes; /* XXX yes, force a copy */
}
@@ -410,6 +410,7 @@ class Session : public sigc::trackable, public Stateful
void set_auto_play (bool yn);
void set_auto_return (bool yn);
void set_auto_input (bool yn);
+ void reset_input_monitor_state ();
void set_input_auto_connect (bool yn);
void set_output_auto_connect (AutoConnectOption);
void set_punch_in (bool yn);
@@ -993,7 +994,7 @@ class Session : public sigc::trackable, public Stateful
Location* end_location;
Slave *_slave;
SlaveSource _slave_type;
- float _transport_speed;
+ volatile float _transport_speed;
volatile float _desired_transport_speed;
float _last_transport_speed;
jack_nframes_t _last_slave_transport_frame;
@@ -1473,7 +1474,7 @@ class Session : public sigc::trackable, public Stateful
/* disk-streams */
DiskStreamList diskstreams;
- mutable PBD::Lock diskstream_lock;
+ mutable PBD::NonBlockingRWLock diskstream_lock;
uint32_t dstream_buffer_size;
void add_diskstream (DiskStream*);
int load_diskstreams (const XMLNode&);
@@ -1481,7 +1482,7 @@ class Session : public sigc::trackable, public Stateful
/* routes stuff */
RouteList routes;
- mutable PBD::NonBlockingLock route_lock;
+ mutable PBD::NonBlockingRWLock route_lock;
void add_route (Route*);
int load_routes (const XMLNode&);
@@ -1685,6 +1686,7 @@ class Session : public sigc::trackable, public Stateful
Sample* click_emphasis_data;
jack_nframes_t click_length;
jack_nframes_t click_emphasis_length;
+ mutable PBD::NonBlockingRWLock click_lock;
static const Sample default_click[];
static const jack_nframes_t default_click_length;
diff --git a/libs/ardour/ardour/session_diskstream.h b/libs/ardour/ardour/session_diskstream.h
index 55c79f549f..24693c5793 100644
--- a/libs/ardour/ardour/session_diskstream.h
+++ b/libs/ardour/ardour/session_diskstream.h
@@ -29,7 +29,7 @@ namespace ARDOUR {
template<class T> void
Session::foreach_diskstream (T *obj, void (T::*func)(DiskStream&))
{
- LockMonitor lm (diskstream_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (diskstream_lock, false, __LINE__, __FILE__);
for (DiskStreamList::iterator i = diskstreams.begin(); i != diskstreams.end(); i++) {
if (!(*i)->hidden()) {
(obj->*func) (**i);
diff --git a/libs/ardour/ardour/session_route.h b/libs/ardour/ardour/session_route.h
index 0b126531dc..f3c8e3f5fb 100644
--- a/libs/ardour/ardour/session_route.h
+++ b/libs/ardour/ardour/session_route.h
@@ -35,7 +35,7 @@ Session::foreach_route (T *obj, void (T::*func)(Route&))
RouteList public_order;
{
- LockMonitor lm (route_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (route_lock, false, __LINE__, __FILE__);
public_order = routes;
}
@@ -53,7 +53,7 @@ Session::foreach_route (T *obj, void (T::*func)(Route*))
RouteList public_order;
{
- LockMonitor lm (route_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (route_lock, false, __LINE__, __FILE__);
public_order = routes;
}
@@ -72,7 +72,7 @@ Session::foreach_route (T *obj, void (T::*func)(Route&, A), A arg1)
RouteList public_order;
{
- LockMonitor lm (route_lock, __LINE__, __FILE__);
+ RWLockMonitor lm (route_lock, false, __LINE__, __FILE__);
public_order = routes;
}