diff options
author | David Robillard <d@drobilla.net> | 2006-07-28 01:08:57 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-07-28 01:08:57 +0000 |
commit | 8277d134b9733aee344782891c99f07114384d9e (patch) | |
tree | 4472cc8608cf59272b127e1c5c722e0530aaac58 /libs/ardour/ardour | |
parent | 60454cc8dc1ca5e1819b853b55916d52497d495c (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')
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); |