Copy-edit.
[ardour.git] / gtk2_ardour / midi_tracer.h
index fc6abee15cc472510eba1ff84ee42a57e370564e..47f173824345ed9cb791b7cfed5ffa018e2fd77b 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef __ardour_gtk_midi_tracer_h__
 #define __ardour_gtk_midi_tracer_h__
 
-#include <types.h>
 #include <gtkmm/textview.h>
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/togglebutton.h>
@@ -10,6 +9,8 @@
 #include <gtkmm/label.h>
 
 #include "pbd/signals.h"
+#include "pbd/ringbuffer.h"
+#include "pbd/pool.h"
 #include "midi++/types.h"
 #include "ardour_dialog.h"
 
@@ -35,13 +36,17 @@ class MidiTracer : public ArdourDialog
        bool autoscroll;
        bool show_hex;
        bool collect;
+       volatile bool update_queued;
+       RingBuffer<char *> fifo;
+       Pool buffer_pool;
+       static const size_t buffer_size = 256;
 
        void tracer (MIDI::Parser&, MIDI::byte*, size_t);
-       void add_string (std::string);
+       void update ();
        
-       Gtk::ToggleButton autoscroll_button;
-       Gtk::ToggleButton base_button;
-       Gtk::ToggleButton collect_button;
+       Gtk::CheckButton autoscroll_button;
+       Gtk::CheckButton base_button;
+       Gtk::CheckButton collect_button;
 
        void base_toggle ();
        void autoscroll_toggle ();
@@ -49,7 +54,7 @@ class MidiTracer : public ArdourDialog
 
        void connect ();
        void disconnect ();
-       PBD::Connection connection;
+       PBD::ScopedConnection connection;
 };
 
 #endif /* __ardour_gtk_midi_tracer_h__ */