diff options
author | Carl Hetherington <carl@carlh.net> | 2010-12-09 21:34:31 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-12-09 21:34:31 +0000 |
commit | 7d4e03e28e58a9315f163738f35559f57b099d37 (patch) | |
tree | 37b39ea5e40835a918a77845b01fb4ab1515ba66 /libs/ardour/ardour | |
parent | ebf3762fa91d911af411f1b5c68e3c67f2c47170 (diff) |
Use a weak_ptr rather than a bald pointer for _midi_source in MidiModel.
git-svn-id: svn://localhost/ardour2/branches/3.0@8228 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/midi_model.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 3 |
2 files changed, 6 insertions, 5 deletions
diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index e959535a36..27ffa4d8a2 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -51,7 +51,7 @@ class MidiModel : public AutomatableSequence<Evoral::MusicalTime> { public: typedef Evoral::MusicalTime TimeType; - MidiModel(MidiSource* s); + MidiModel (boost::shared_ptr<MidiSource>); NoteMode note_mode() const { return (percussive() ? Percussive : Sustained); } void set_note_mode(NoteMode mode) { set_percussive(mode == Percussive); }; @@ -140,8 +140,8 @@ public: PBD::Signal0<void> ContentsChanged; - const MidiSource* midi_source() const { return _midi_source; } - void set_midi_source (MidiSource *); + boost::shared_ptr<const MidiSource> midi_source (); + void set_midi_source (boost::shared_ptr<MidiSource>); boost::shared_ptr<Evoral::Note<TimeType> > find_note (NotePtr); boost::shared_ptr<Evoral::Note<TimeType> > find_note (gint note_id); @@ -181,7 +181,7 @@ private: PBD::ScopedConnectionList _midi_source_connections; // We cannot use a boost::shared_ptr here to avoid a retain cycle - MidiSource* _midi_source; + boost::weak_ptr<MidiSource> _midi_source; InsertMergePolicy _insert_merge_policy; }; diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h index e40ccff291..33a0c3c1fa 100644 --- a/libs/ardour/ardour/midi_source.h +++ b/libs/ardour/ardour/midi_source.h @@ -23,6 +23,7 @@ #include <string> #include <time.h> #include <glibmm/thread.h> +#include <boost/enable_shared_from_this.hpp> #include "pbd/stateful.h" #include "pbd/xml++.h" #include "evoral/Sequence.hpp" @@ -38,7 +39,7 @@ class MidiModel; template<typename T> class MidiRingBuffer; /** Source for MIDI data */ -class MidiSource : virtual public Source +class MidiSource : virtual public Source, public boost::enable_shared_from_this<MidiSource> { public: typedef double TimeType; |