summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-01 23:18:56 +0000
committerDavid Robillard <d@drobilla.net>2007-08-01 23:18:56 +0000
commit874f3bbf8b4b8bb3e92f31c96623b1bcb4dd5c8a (patch)
treeb649f164fa22e8a05b9d70c7022e1c1e02829223 /libs
parent6698f5f686bef82b0c9568558c83a3b9b3344700 (diff)
Fix note delete crash bug.
Fix midi recording crash bug. git-svn-id: svn://localhost/ardour2/trunk@2216 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/midi_source.h1
-rw-r--r--libs/ardour/midi_source.cc8
-rw-r--r--libs/ardour/smf_source.cc3
3 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index ba4fe99604..c812f465ea 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -90,6 +90,7 @@ class MidiSource : public Source
boost::shared_ptr<MidiModel> _model;
bool _model_loaded;
+ bool _writing;
private:
bool file_changed (string path);
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc
index 09e574c2ed..59aeddf831 100644
--- a/libs/ardour/midi_source.cc
+++ b/libs/ardour/midi_source.cc
@@ -46,6 +46,7 @@ MidiSource::MidiSource (Session& s, string name)
: Source (s, name, DataType::MIDI)
, _model(new MidiModel(s))
, _model_loaded (false)
+ , _writing (false)
{
_read_data_count = 0;
_write_data_count = 0;
@@ -55,6 +56,7 @@ MidiSource::MidiSource (Session& s, const XMLNode& node)
: Source (s, node)
, _model(new MidiModel(s))
, _model_loaded (false)
+ , _writing (false)
{
_read_data_count = 0;
_write_data_count = 0;
@@ -131,6 +133,8 @@ MidiSource::mark_streaming_midi_write_started (NoteMode mode)
_model->set_note_mode(mode);
_model->start_write();
}
+
+ _writing = true;
}
void
@@ -138,6 +142,8 @@ MidiSource::mark_streaming_write_started ()
{
if (_model)
_model->start_write();
+
+ _writing = true;
}
void
@@ -145,5 +151,7 @@ MidiSource::mark_streaming_write_completed ()
{
if (_model)
_model->end_write(false); // FIXME: param?
+
+ _writing = false;
}
diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc
index 4ae1cd34ab..686fb96af3 100644
--- a/libs/ardour/smf_source.cc
+++ b/libs/ardour/smf_source.cc
@@ -796,6 +796,9 @@ SMFSource::read_var_len() const
void
SMFSource::load_model(bool lock, bool force_reload)
{
+ if (_writing)
+ return;
+
if (lock)
Glib::Mutex::Lock lm (_lock);