summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-07-28 01:08:57 +0000
committerDavid Robillard <d@drobilla.net>2006-07-28 01:08:57 +0000
commit8277d134b9733aee344782891c99f07114384d9e (patch)
tree4472cc8608cf59272b127e1c5c722e0530aaac58 /libs/ardour/ardour
parent60454cc8dc1ca5e1819b853b55916d52497d495c (diff)
Merged with trunk R708
git-svn-id: svn://localhost/ardour2/branches/midi@712 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/ardour.h2
-rw-r--r--libs/ardour/ardour/audio_diskstream.h2
-rw-r--r--libs/ardour/ardour/audio_library.h2
-rw-r--r--libs/ardour/ardour/audio_track.h5
-rw-r--r--libs/ardour/ardour/audioengine.h2
-rw-r--r--libs/ardour/ardour/audiofilesource.h5
-rw-r--r--libs/ardour/ardour/audioregion.h3
-rw-r--r--libs/ardour/ardour/configuration.h2
-rw-r--r--libs/ardour/ardour/curve.h2
-rw-r--r--libs/ardour/ardour/destructive_filesource.h3
-rw-r--r--libs/ardour/ardour/export.h2
-rw-r--r--libs/ardour/ardour/insert.h14
-rw-r--r--libs/ardour/ardour/io.h2
-rw-r--r--libs/ardour/ardour/location.h2
-rw-r--r--libs/ardour/ardour/logcurve.h2
-rw-r--r--libs/ardour/ardour/panner.h2
-rw-r--r--libs/ardour/ardour/plugin.h3
-rw-r--r--libs/ardour/ardour/plugin_manager.h4
-rw-r--r--libs/ardour/ardour/port.h2
-rw-r--r--libs/ardour/ardour/redirect.h5
-rw-r--r--libs/ardour/ardour/route.h26
-rw-r--r--libs/ardour/ardour/route_group.h2
-rw-r--r--libs/ardour/ardour/send.h2
-rw-r--r--libs/ardour/ardour/session.h84
-rw-r--r--libs/ardour/ardour/session_route.h33
-rw-r--r--libs/ardour/ardour/sndfilesource.h2
-rw-r--r--libs/ardour/ardour/track.h14
-rw-r--r--libs/ardour/ardour/types.h6
28 files changed, 117 insertions, 118 deletions
diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h
index dba588702f..ba92416339 100644
--- a/libs/ardour/ardour/ardour.h
+++ b/libs/ardour/ardour/ardour.h
@@ -74,7 +74,7 @@ namespace ARDOUR {
const char* old;
};
-};
+}
/* how do we make these be within the Ardour namespace? */
diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h
index 247939b378..c4a942a5d7 100644
--- a/libs/ardour/ardour/audio_diskstream.h
+++ b/libs/ardour/ardour/audio_diskstream.h
@@ -305,6 +305,6 @@ class AudioDiskstream : public Diskstream
void disengage_record_enable (void* src);
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_audio_diskstream_h__ */
diff --git a/libs/ardour/ardour/audio_library.h b/libs/ardour/ardour/audio_library.h
index 3d4585fbd8..f5ac6da654 100644
--- a/libs/ardour/ardour/audio_library.h
+++ b/libs/ardour/ardour/audio_library.h
@@ -42,6 +42,8 @@ class AudioLibrary : public Stateful
AudioLibrary ();
~AudioLibrary ();
+ static string state_node_name;
+
XMLNode& get_state (void);
int set_state (const XMLNode&);
diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h
index b03205dfaf..2616705918 100644
--- a/libs/ardour/ardour/audio_track.h
+++ b/libs/ardour/ardour/audio_track.h
@@ -81,13 +81,12 @@ class AudioTrack : public Track
uint32_t n_process_buffers ();
private:
- int set_diskstream (AudioDiskstream&, void *);
-
+ int set_diskstream (AudioDiskstream&, void *);
int deprecated_use_diskstream_connections ();
void set_state_part_two ();
void set_state_part_three ();
};
-} /* namespace ARDOUR*/
+} // namespace ARDOUR
#endif /* __ardour_audio_track_h__ */
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index 6f3de18473..bac1e3720a 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -244,6 +244,6 @@ class AudioEngine : public sigc::trackable
mutable gint m_meter_exit;
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_audioengine_h__ */
diff --git a/libs/ardour/ardour/audiofilesource.h b/libs/ardour/ardour/audiofilesource.h
index b793ed14f0..3e0d4c45ae 100644
--- a/libs/ardour/ardour/audiofilesource.h
+++ b/libs/ardour/ardour/audiofilesource.h
@@ -42,7 +42,8 @@ class AudioFileSource : public AudioSource {
Removable = 0x8,
RemovableIfEmpty = 0x10,
RemoveAtDestroy = 0x20,
- NoPeakFile = 0x40
+ NoPeakFile = 0x40,
+ Destructive = 0x80
};
virtual ~AudioFileSource ();
@@ -150,7 +151,7 @@ class AudioFileSource : public AudioSource {
bool writable() const { return _flags & Writable; }
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_audiofilesource_h__ */
diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h
index f3d34eb262..54e2d73af0 100644
--- a/libs/ardour/ardour/audioregion.h
+++ b/libs/ardour/ardour/audioregion.h
@@ -123,8 +123,7 @@ class AudioRegion : public Region
Fast,
Slow,
LogA,
- LogB,
-
+ LogB
};
void set_fade_in_active (bool yn);
diff --git a/libs/ardour/ardour/configuration.h b/libs/ardour/ardour/configuration.h
index cc4376f781..dd689e9a2d 100644
--- a/libs/ardour/ardour/configuration.h
+++ b/libs/ardour/ardour/configuration.h
@@ -99,6 +99,6 @@ class Configuration : public Stateful
extern Configuration *Config;
extern gain_t speed_quietning; /* see comment in configuration.cc */
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_configuration_h__ */
diff --git a/libs/ardour/ardour/curve.h b/libs/ardour/ardour/curve.h
index ede060e1cb..7f8a43cfe1 100644
--- a/libs/ardour/ardour/curve.h
+++ b/libs/ardour/ardour/curve.h
@@ -76,7 +76,7 @@ class Curve : public AutomationList
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
extern "C" {
void curve_get_vector_from_c (void *arg, double, double, float*, int32_t);
diff --git a/libs/ardour/ardour/destructive_filesource.h b/libs/ardour/ardour/destructive_filesource.h
index 947367f754..5b773898c3 100644
--- a/libs/ardour/ardour/destructive_filesource.h
+++ b/libs/ardour/ardour/destructive_filesource.h
@@ -34,6 +34,8 @@ class DestructiveFileSource : public SndFileSource {
DestructiveFileSource (std::string path, SampleFormat samp_format, HeaderFormat hdr_format, jack_nframes_t rate,
Flag flags = AudioFileSource::Flag (AudioFileSource::Writable));
+ DestructiveFileSource (std::string path, Flag flags);
+
DestructiveFileSource (const XMLNode&);
~DestructiveFileSource ();
@@ -62,6 +64,7 @@ class DestructiveFileSource : public SndFileSource {
jack_nframes_t file_pos; // unit is frames
Sample* xfade_buf;
+ void init ();
jack_nframes_t crossfade (Sample* data, jack_nframes_t cnt, int dir, char * workbuf);
void set_timeline_position (jack_nframes_t);
};
diff --git a/libs/ardour/ardour/export.h b/libs/ardour/ardour/export.h
index 9a6da1592b..075464767e 100644
--- a/libs/ardour/ardour/export.h
+++ b/libs/ardour/ardour/export.h
@@ -83,6 +83,6 @@ namespace ARDOUR
int status;
};
-};
+} // namespace ARDOUR
#endif /* __ardour_export_h__ */
diff --git a/libs/ardour/ardour/insert.h b/libs/ardour/ardour/insert.h
index 2d6b672064..a4c4439942 100644
--- a/libs/ardour/ardour/insert.h
+++ b/libs/ardour/ardour/insert.h
@@ -98,7 +98,7 @@ struct PluginInsertState : public RedirectState
class PluginInsert : public Insert
{
public:
- PluginInsert (Session&, Plugin&, Placement);
+ PluginInsert (Session&, boost::shared_ptr<Plugin>, Placement);
PluginInsert (Session&, const XMLNode&);
PluginInsert (const PluginInsert&);
~PluginInsert ();
@@ -141,11 +141,11 @@ class PluginInsert : public Insert
float default_parameter_value (uint32_t which);
- Plugin& plugin(uint32_t num=0) const {
+ boost::shared_ptr<Plugin> plugin(uint32_t num=0) const {
if (num < _plugins.size()) {
- return *_plugins[num];
+ return _plugins[num];
} else {
- return *_plugins[0]; // we always have one
+ return _plugins[0]; // we always have one
}
}
@@ -163,7 +163,7 @@ class PluginInsert : public Insert
void parameter_changed (uint32_t, float);
- vector<Plugin*> _plugins;
+ vector<boost::shared_ptr<Plugin> > _plugins;
void automation_run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
void connect_and_run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset, bool with_auto, jack_nframes_t now = 0);
@@ -172,9 +172,9 @@ class PluginInsert : public Insert
void auto_state_changed (uint32_t which);
void automation_list_creation_callback (uint32_t, AutomationList&);
- Plugin* plugin_factory (Plugin&);
+ boost::shared_ptr<Plugin> plugin_factory (boost::shared_ptr<Plugin>);
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_insert_h__ */
diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h
index 6cff58eef8..94e1483ad6 100644
--- a/libs/ardour/ardour/io.h
+++ b/libs/ardour/ardour/io.h
@@ -393,6 +393,6 @@ public:
int32_t find_output_port_hole ();
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /*__ardour_io_h__ */
diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h
index 2c9f947541..30c02a80a1 100644
--- a/libs/ardour/ardour/location.h
+++ b/libs/ardour/ardour/location.h
@@ -199,6 +199,6 @@ class Locations : public Stateful, public StateManager
StateManager::State* state_factory (std::string why) const;
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_location_h__ */
diff --git a/libs/ardour/ardour/logcurve.h b/libs/ardour/ardour/logcurve.h
index e65be55772..ac60a10fd7 100644
--- a/libs/ardour/ardour/logcurve.h
+++ b/libs/ardour/ardour/logcurve.h
@@ -126,7 +126,7 @@ class LogCurveOut : public LogCurve
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_logcurve_h__ */
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index 37c985a2ef..75c59eb924 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -312,6 +312,6 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
static float current_automation_version_number;
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /*__ardour_panner_h__ */
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index e7d05aa352..97708065e4 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -21,6 +21,7 @@
#ifndef __ardour_ladspa_h__
#define __ardour_ladspa_h__
+#include <boost/shared_ptr.hpp>
#include <sigc++/signal.h>
#include <pbd/stateful.h>
@@ -179,7 +180,7 @@ class Plugin : public Stateful, public sigc::trackable
/* this is actually defined in plugin_manager.cc */
-Plugin * find_plugin(ARDOUR::Session&, string name, long unique_id, PluginInfo::Type);
+boost::shared_ptr<Plugin> find_plugin(ARDOUR::Session&, string name, long unique_id, PluginInfo::Type);
} // namespace ARDOUR
diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h
index 1a07c67c8d..cc9a04738e 100644
--- a/libs/ardour/ardour/plugin_manager.h
+++ b/libs/ardour/ardour/plugin_manager.h
@@ -5,6 +5,8 @@
#include <map>
#include <string>
+#include <boost/shared_ptr.hpp>
+
#include <ardour/types.h>
namespace ARDOUR {
@@ -26,7 +28,7 @@ class PluginManager {
int add_ladspa_directory (std::string dirpath);
int add_vst_directory (std::string dirpath);
- Plugin *load (ARDOUR::Session& s, PluginInfo* info);
+ boost::shared_ptr<Plugin> load (ARDOUR::Session& s, PluginInfo* info);
static PluginManager* the_manager() { return _manager; }
diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h
index 0b7d79cbd6..86c99cb7e3 100644
--- a/libs/ardour/ardour/port.h
+++ b/libs/ardour/ardour/port.h
@@ -207,6 +207,6 @@ class Port : public sigc::trackable {
static jack_nframes_t _short_over_length;
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_port_h__ */
diff --git a/libs/ardour/ardour/redirect.h b/libs/ardour/ardour/redirect.h
index ede55a1d80..658cab5d3b 100644
--- a/libs/ardour/ardour/redirect.h
+++ b/libs/ardour/ardour/redirect.h
@@ -25,6 +25,7 @@
#include <vector>
#include <set>
#include <map>
+#include <boost/shared_ptr.hpp>
#include <sigc++/signal.h>
#include <glibmm/thread.h>
@@ -64,7 +65,7 @@ class Redirect : public IO
Redirect (const Redirect&);
virtual ~Redirect ();
- static Redirect *clone (const Redirect&);
+ static boost::shared_ptr<Redirect> clone (boost::shared_ptr<const Redirect>);
bool active () const { return _active; }
void set_active (bool yn, void *src);
@@ -148,6 +149,6 @@ class Redirect : public IO
void* _gui; /* generic, we don't know or care what this is */
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_redirect_h__ */
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index d30138640a..c85f34f1fa 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -27,6 +27,8 @@
#include <map>
#include <string>
+#include <boost/shared_ptr.hpp>
+
#include <pbd/fastlog.h>
#include <glibmm/thread.h>
#include <pbd/xml++.h>
@@ -57,13 +59,13 @@ class Route : public IO
{
protected:
- typedef list<Redirect *> RedirectList;
+ typedef list<boost::shared_ptr<Redirect> > RedirectList;
public:
enum Flag {
Hidden = 0x1,
MasterOut = 0x2,
- ControlOut = 0x4,
+ ControlOut = 0x4
};
@@ -141,19 +143,19 @@ class Route : public IO
void flush_redirects ();
- template<class T> void foreach_redirect (T *obj, void (T::*func)(Redirect *)) {
+ template<class T> void foreach_redirect (T *obj, void (T::*func)(boost::shared_ptr<Redirect>)) {
Glib::RWLock::ReaderLock lm (redirect_lock);
for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
(obj->*func) (*i);
}
}
- Redirect *nth_redirect (uint32_t n) {
+ boost::shared_ptr<Redirect> nth_redirect (uint32_t n) {
Glib::RWLock::ReaderLock lm (redirect_lock);
RedirectList::iterator i;
for (i = _redirects.begin(); i != _redirects.end() && n; ++i, --n);
if (i == _redirects.end()) {
- return 0;
+ return boost::shared_ptr<Redirect> ();
} else {
return *i;
}
@@ -161,9 +163,9 @@ class Route : public IO
uint32_t max_redirect_outs () const { return redirect_max_outs; }
- int add_redirect (Redirect *, void *src, uint32_t* err_streams = 0);
+ int add_redirect (boost::shared_ptr<Redirect>, void *src, uint32_t* err_streams = 0);
int add_redirects (const RedirectList&, void *src, uint32_t* err_streams = 0);
- int remove_redirect (Redirect *, void *src, uint32_t* err_streams = 0);
+ int remove_redirect (boost::shared_ptr<Redirect>, void *src, uint32_t* err_streams = 0);
int copy_redirects (const Route&, Placement, uint32_t* err_streams = 0);
int sort_redirects (uint32_t* err_streams = 0);
@@ -212,8 +214,8 @@ class Route : public IO
int set_control_outs (const vector<std::string>& ports);
IO* control_outs() { return _control_outs; }
- bool feeds (Route *);
- set<Route *> fed_by;
+ bool feeds (boost::shared_ptr<Route>);
+ set<boost::shared_ptr<Route> > fed_by;
struct ToggleControllable : public PBD::Controllable {
enum ToggleType {
@@ -339,12 +341,12 @@ class Route : public IO
/* plugin count handling */
struct InsertCount {
- ARDOUR::Insert& insert;
+ boost::shared_ptr<ARDOUR::Insert> insert;
int32_t cnt;
int32_t in;
int32_t out;
- InsertCount (ARDOUR::Insert& ins) : insert (ins), cnt (-1) {}
+ InsertCount (boost::shared_ptr<ARDOUR::Insert> ins) : insert (ins), cnt (-1) {}
};
int32_t apply_some_plugin_counts (std::list<InsertCount>& iclist);
@@ -355,6 +357,6 @@ class Route : public IO
void redirect_active_proxy (Redirect*, void*);
};
-}; /* namespace ARDOUR*/
+} // namespace ARDOUR
#endif /* __ardour_route_h__ */
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index 19374b4f65..11253eda5b 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -43,7 +43,7 @@ class RouteGroup : public Stateful, public sigc::trackable {
enum Flag {
Relative = 0x1,
Active = 0x2,
- Hidden = 0x4,
+ Hidden = 0x4
};
RouteGroup (Session& s, const string &n, Flag f = Flag(0));
diff --git a/libs/ardour/ardour/send.h b/libs/ardour/ardour/send.h
index 54d4cbd7a9..0a068e8af0 100644
--- a/libs/ardour/ardour/send.h
+++ b/libs/ardour/ardour/send.h
@@ -58,6 +58,6 @@ class Send : public Redirect {
uint32_t expected_inputs;
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_send_h__ */
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 10cb554842..7bd24b96cc 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -36,6 +36,7 @@
#include <pbd/error.h>
#include <pbd/undo.h>
#include <pbd/pool.h>
+#include <pbd/rcu.h>
#include <midi++/types.h>
#include <midi++/mmc.h>
@@ -112,9 +113,9 @@ class Session : public sigc::trackable, public Stateful
{
private:
- typedef std::pair<Route*,bool> RouteBooleanState;
+ typedef std::pair<boost::shared_ptr<Route>,bool> RouteBooleanState;
typedef vector<RouteBooleanState> GlobalRouteBooleanState;
- typedef std::pair<Route*,MeterPoint> RouteMeterState;
+ typedef std::pair<boost::shared_ptr<Route>,MeterPoint> RouteMeterState;
typedef vector<RouteMeterState> GlobalRouteMeterState;
public:
@@ -127,7 +128,7 @@ class Session : public sigc::trackable, public Stateful
enum SlaveSource {
None = 0,
MTC,
- JACK,
+ JACK
};
enum AutoConnectOption {
@@ -158,7 +159,7 @@ class Session : public sigc::trackable, public Stateful
*/
StopOnce,
- AutoLoop,
+ AutoLoop
};
enum Action {
@@ -178,6 +179,7 @@ class Session : public sigc::trackable, public Stateful
void* ptr;
bool yes_or_no;
Session::SlaveSource slave;
+ Route* route;
};
list<AudioRange> audio_range;
@@ -292,27 +294,26 @@ class Session : public sigc::trackable, public Stateful
typedef list<Diskstream *> DiskstreamList;
- typedef list<Route *> RouteList;
+ typedef std::list<boost::shared_ptr<Route> > RouteList;
- RouteList get_routes() const {
- Glib::RWLock::ReaderLock rlock (route_lock);
- return routes; /* XXX yes, force a copy */
+ boost::shared_ptr<RouteList> get_routes() const {
+ return routes.reader ();
}
- uint32_t nroutes() const { return routes.size(); }
+ uint32_t nroutes() const { return routes.reader()->size(); }
uint32_t ntracks () const;
uint32_t nbusses () const;
struct RoutePublicOrderSorter {
- bool operator() (Route *, Route *b);
+ bool operator() (boost::shared_ptr<Route>, boost::shared_ptr<Route> b);
};
template<class T> void foreach_route (T *obj, void (T::*func)(Route&));
- template<class T> void foreach_route (T *obj, void (T::*func)(Route*));
+ template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>));
template<class T, class A> void foreach_route (T *obj, void (T::*func)(Route&, A), A arg);
- Route *route_by_name (string);
- Route *route_by_remote_id (uint32_t id);
+ boost::shared_ptr<Route> route_by_name (string);
+ boost::shared_ptr<Route> route_by_remote_id (uint32_t id);
bool route_name_unique (string) const;
@@ -354,7 +355,7 @@ class Session : public sigc::trackable, public Stateful
sigc::signal<void> DurationChanged;
sigc::signal<void> HaltOnXrun;
- sigc::signal<void,Route*> RouteAdded;
+ sigc::signal<void,boost::shared_ptr<Route> > RouteAdded;
sigc::signal<void,Diskstream*> DiskstreamAdded;
void request_roll ();
@@ -505,9 +506,6 @@ class Session : public sigc::trackable, public Stateful
void add_instant_xml (XMLNode&, const std::string& dir);
- void swap_configuration(Configuration** new_config);
- void copy_configuration(Configuration* new_config);
-
enum StateOfTheState {
Clean = 0x0,
Dirty = 0x1,
@@ -548,15 +546,19 @@ class Session : public sigc::trackable, public Stateful
/* fundamental operations. duh. */
- AudioTrack *new_audio_track (int input_channels, int output_channels, TrackMode mode = Normal);
- Route *new_audio_route (int input_channels, int output_channels);
+ boost::shared_ptr<AudioTrack> new_audio_track (int input_channels, int output_channels, TrackMode mode = Normal);
+ boost::shared_ptr<Route> new_audio_route (int input_channels, int output_channels);
+
+ boost::shared_ptr<MidiTrack> new_midi_track (TrackMode mode = Normal);
+ boost::shared_ptr<Route> new_midi_route ();
+
+ void remove_route (boost::shared_ptr<Route>);
+ void resort_routes ();
+ void resort_routes_using (boost::shared_ptr<RouteList>);
+ void resort_routes_proxy (void* src) {
+ resort_routes ();
+ }
- MidiTrack *new_midi_track (TrackMode mode = Normal);
- Route *new_midi_route ();
-
- void remove_route (Route&);
- void resort_routes (void *src);
-
AudioEngine &engine() { return _engine; };
/* configuration. there should really be accessors/mutators
@@ -735,7 +737,7 @@ class Session : public sigc::trackable, public Stateful
/* auditioning */
- Auditioner& the_auditioner() { return *auditioner; }
+ boost::shared_ptr<Auditioner> the_auditioner() { return auditioner; }
void audition_playlist ();
void audition_region (AudioRegion&);
void cancel_audition ();
@@ -774,8 +776,8 @@ class Session : public sigc::trackable, public Stateful
/* control/master out */
- IO* control_out() const { return _control_out; }
- IO* master_out() const { return _master_out; }
+ boost::shared_ptr<IO> control_out() const { return _control_out; }
+ boost::shared_ptr<IO> master_out() const { return _master_out; }
/* insert/send management */
@@ -870,7 +872,7 @@ class Session : public sigc::trackable, public Stateful
/* clicking */
- IO& click_io() { return *_click_io; }
+ boost::shared_ptr<IO> click_io() { return _click_io; }
void set_clicking (bool yn);
bool get_clicking() const;
@@ -1040,9 +1042,9 @@ class Session : public sigc::trackable, public Stateful
float _meter_falloff;
bool _end_location_is_free;
- void set_worst_io_latencies (bool take_lock);
+ void set_worst_io_latencies ();
void set_worst_io_latencies_x (IOChange asifwecare, void *ignored) {
- set_worst_io_latencies (true);
+ set_worst_io_latencies ();
}
void update_latency_compensation_proxy (void* ignored);
@@ -1481,13 +1483,13 @@ class Session : public sigc::trackable, public Stateful
/* routes stuff */
- RouteList routes;
- mutable Glib::RWLock route_lock;
- void add_route (Route*);
+ SerializedRCUManager<RouteList> routes;
+
+ void add_route (boost::shared_ptr<Route>);
uint32_t destructive_index;
int load_routes (const XMLNode&);
- Route* XMLRouteFactory (const XMLNode&);
+ boost::shared_ptr<Route> XMLRouteFactory (const XMLNode&);
/* mixer stuff */
@@ -1497,7 +1499,7 @@ class Session : public sigc::trackable, public Stateful
bool currently_soloing;
void route_mute_changed (void *src);
- void route_solo_changed (void *src, Route *);
+ void route_solo_changed (void *src, boost::shared_ptr<Route>);
void catch_up_on_solo ();
void update_route_solo_state ();
void modify_solo_mute (bool, bool);
@@ -1564,7 +1566,7 @@ class Session : public sigc::trackable, public Stateful
/* AUDITIONING */
- Auditioner *auditioner;
+ boost::shared_ptr<Auditioner> auditioner;
void set_audition (AudioRegion*);
void non_realtime_set_audition ();
AudioRegion *pending_audition_region;
@@ -1681,7 +1683,7 @@ class Session : public sigc::trackable, public Stateful
Clicks clicks;
bool _clicking;
- IO* _click_io;
+ boost::shared_ptr<IO> _click_io;
Sample* click_data;
Sample* click_emphasis_data;
jack_nframes_t click_length;
@@ -1713,8 +1715,8 @@ class Session : public sigc::trackable, public Stateful
/* main outs */
uint32_t main_outs;
- IO* _master_out;
- IO* _control_out;
+ boost::shared_ptr<IO> _master_out;
+ boost::shared_ptr<IO> _control_out;
AutoConnectOption input_auto_connect;
AutoConnectOption output_auto_connect;
@@ -1756,6 +1758,6 @@ class Session : public sigc::trackable, public Stateful
void remove_controllable (PBD::Controllable*);
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __ardour_session_h__ */
diff --git a/libs/ardour/ardour/session_route.h b/libs/ardour/ardour/session_route.h
index afe78b394e..feacc14775 100644
--- a/libs/ardour/ardour/session_route.h
+++ b/libs/ardour/ardour/session_route.h
@@ -33,14 +33,10 @@ namespace ARDOUR {
template<class T> void
Session::foreach_route (T *obj, void (T::*func)(Route&))
{
- RouteList public_order;
-
- {
- Glib::RWLock::ReaderLock lm (route_lock);
- public_order = routes;
- }
-
+ boost::shared_ptr<RouteList> r = routes.reader();
+ RouteList public_order (*r);
RoutePublicOrderSorter cmp;
+
public_order.sort (cmp);
for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) {
@@ -49,16 +45,12 @@ Session::foreach_route (T *obj, void (T::*func)(Route&))
}
template<class T> void
-Session::foreach_route (T *obj, void (T::*func)(Route*))
+Session::foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>))
{
- RouteList public_order;
-
- {
- Glib::RWLock::ReaderLock lm (route_lock);
- public_order = routes;
- }
-
+ boost::shared_ptr<RouteList> r = routes.reader();
+ RouteList public_order (*r);
RoutePublicOrderSorter cmp;
+
public_order.sort (cmp);
for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) {
@@ -66,18 +58,13 @@ Session::foreach_route (T *obj, void (T::*func)(Route*))
}
}
-
template<class T, class A> void
Session::foreach_route (T *obj, void (T::*func)(Route&, A), A arg1)
{
- RouteList public_order;
-
- {
- Glib::RWLock::ReaderLock lm (route_lock);
- public_order = routes;
- }
-
+ boost::shared_ptr<RouteList> r = routes.reader();
+ RouteList public_order (*r);
RoutePublicOrderSorter cmp;
+
public_order.sort (cmp);
for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) {
diff --git a/libs/ardour/ardour/sndfilesource.h b/libs/ardour/ardour/sndfilesource.h
index 55a0e990a0..4764339451 100644
--- a/libs/ardour/ardour/sndfilesource.h
+++ b/libs/ardour/ardour/sndfilesource.h
@@ -75,7 +75,7 @@ class SndFileSource : public AudioFileSource {
int setup_broadcast_info (jack_nframes_t when, struct tm&, time_t);
};
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
#endif /* __sndfile_source_h__ */
diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h
index 7389e174b0..86bfeb0c9b 100644
--- a/libs/ardour/ardour/track.h
+++ b/libs/ardour/ardour/track.h
@@ -103,15 +103,15 @@ class Track : public Route
MeterPoint _saved_meter_point;
TrackMode _mode;
- //private:
+ //private: (FIXME)
struct FreezeRecordInsertInfo {
- FreezeRecordInsertInfo(XMLNode& st)
- : state (st), insert (0) {}
+ FreezeRecordInsertInfo(XMLNode& st, boost::shared_ptr<Insert> ins)
+ : state (st), insert (ins) {}
- XMLNode state;
- Insert* insert;
- PBD::ID id;
- UndoAction memento;
+ XMLNode state;
+ boost::shared_ptr<Insert> insert;
+ PBD::ID id;
+ UndoAction memento;
};
struct FreezeRecord {
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index 1ae58039d9..c5b79a950c 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -73,7 +73,7 @@ namespace ARDOUR {
PanAutomation = 0x2,
PluginAutomation = 0x4,
SoloAutomation = 0x8,
- MuteAutomation = 0x10,
+ MuteAutomation = 0x10
};
enum AutoState {
@@ -192,7 +192,7 @@ namespace ARDOUR {
enum EditMode {
Slide,
- Splice,
+ Splice
};
enum RegionPoint {
@@ -245,7 +245,7 @@ namespace ARDOUR {
PeakDatum min;
PeakDatum max;
};
-};
+}
std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat& sf);
std::istream& operator>>(std::istream& o, ARDOUR::HeaderFormat& sf);