summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_tracer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-06-28 23:07:05 +0000
committerCarl Hetherington <carl@carlh.net>2010-06-28 23:07:05 +0000
commita3cb425ca957bad3d4862ac38b111e71f7bcb318 (patch)
tree13f9dbe3882b9c669a4f0a9b80ef692e90730391 /gtk2_ardour/midi_tracer.cc
parent21e10145d8391d29c73fc262a8fbedf66cb24945 (diff)
Fix race causing MIDI tracer to stop working when master record state is changed.
git-svn-id: svn://localhost/ardour2/branches/3.0@7320 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_tracer.cc')
-rw-r--r--gtk2_ardour/midi_tracer.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc
index a9f38b52ff..565d0f4911 100644
--- a/gtk2_ardour/midi_tracer.cc
+++ b/gtk2_ardour/midi_tracer.cc
@@ -25,7 +25,7 @@ MidiTracer::MidiTracer (const std::string& name, Parser& p)
, autoscroll (true)
, show_hex (true)
, collect (true)
- , update_queued (false)
+ , _update_queued (0)
, fifo (1024)
, buffer_pool ("miditracer", buffer_size, 1024) // 1024 256 byte buffers
, autoscroll_button (_("Auto-Scroll"))
@@ -255,9 +255,9 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
fifo.write (&buf, 1);
- if (!update_queued) {
+ if (g_atomic_int_get (&_update_queued) == 0) {
gui_context()->call_slot (invalidator (*this), boost::bind (&MidiTracer::update, this));
- update_queued = true;
+ g_atomic_int_inc (&_update_queued);
}
}
@@ -265,7 +265,7 @@ void
MidiTracer::update ()
{
bool updated = false;
- update_queued = false;
+ g_atomic_int_dec_and_test (&_update_queued);
RefPtr<TextBuffer> buf (text.get_buffer());