summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-07-31 02:16:46 +0000
committerDavid Robillard <d@drobilla.net>2007-07-31 02:16:46 +0000
commitbb33e5d9f805dadf96cf988de9fcc5c89545add7 (patch)
tree9db98c772d176f12937bca49d448c28b0ce6e1cc /libs
parentea5a4eac105d50000969aa08a35ccd49a40ccd86 (diff)
Get MidiRegionView's hands on MidiModel for editing operations to come.
MIDI select rectangle. Add notes on a proper click only (not mouse down). Fix crash when dragging from region to outside region. git-svn-id: svn://localhost/ardour2/trunk@2196 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/midi_source.h6
-rw-r--r--libs/ardour/midi_source.cc1
-rw-r--r--libs/ardour/smf_source.cc5
3 files changed, 5 insertions, 7 deletions
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index 9917a0cb42..ba4fe99604 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -77,7 +77,7 @@ class MidiSource : public Source
void set_note_mode(NoteMode mode) { if (_model) _model->set_note_mode(mode); }
virtual bool model_loaded() const { return _model_loaded; }
- MidiModel* model() { return _model; }
+ boost::shared_ptr<MidiModel> model() { return _model; }
protected:
virtual nframes_t read_unlocked (MidiRingBuffer& dst, nframes_t start, nframes_t cnt, nframes_t stamp_offset) const = 0;
@@ -88,8 +88,8 @@ class MidiSource : public Source
mutable uint32_t _read_data_count; ///< modified in read()
mutable uint32_t _write_data_count; ///< modified in write()
- MidiModel* _model;
- bool _model_loaded;
+ boost::shared_ptr<MidiModel> _model;
+ bool _model_loaded;
private:
bool file_changed (string path);
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc
index 238bf4f481..09e574c2ed 100644
--- a/libs/ardour/midi_source.cc
+++ b/libs/ardour/midi_source.cc
@@ -66,7 +66,6 @@ MidiSource::MidiSource (Session& s, const XMLNode& node)
MidiSource::~MidiSource ()
{
- delete _model;
}
XMLNode&
diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc
index eac782853f..d9a46ec782 100644
--- a/libs/ardour/smf_source.cc
+++ b/libs/ardour/smf_source.cc
@@ -805,7 +805,7 @@ SMFSource::load_model(bool lock, bool force_reload)
}
if (! _model) {
- _model = new MidiModel(_session);
+ _model = boost::shared_ptr<MidiModel>(new MidiModel(_session));
} else {
cerr << "SMFSource: Reloading model." << endl;
_model->clear();
@@ -855,7 +855,6 @@ SMFSource::load_model(bool lock, bool force_reload)
void
SMFSource::destroy_model()
{
- delete _model;
- _model = NULL;
+ _model.reset();
}