summaryrefslogtreecommitdiff
path: root/gtk2_ardour/engine_dialog.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-06-13 12:01:55 +0200
committerRobin Gareus <robin@gareus.org>2014-06-13 12:01:55 +0200
commit2e88935bbf75534153e12b8a19606dd6f31f8ec2 (patch)
tree3bf07b12de3dbe55b18a5f4f4ff6e91e635cac82 /gtk2_ardour/engine_dialog.h
parentda912f7ed41249af2262cb11b6332bf5bd8d9907 (diff)
add GUI for midi-device settings (and properly indent the code)
Diffstat (limited to 'gtk2_ardour/engine_dialog.h')
-rw-r--r--gtk2_ardour/engine_dialog.h42
1 files changed, 38 insertions, 4 deletions
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index bb077d0705..d5eee0dd2e 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -79,6 +79,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
Gtk::Label have_control_text;
Gtk::Button control_app_button;
+ ArdourButton midi_devices_button;
Gtk::Button connect_disconnect_button;
@@ -91,7 +92,6 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
Gtk::Button lm_use_button;
Gtk::Button lm_back_button;
ArdourButton lm_button_audio;
- ArdourButton lm_button_midi;
Gtk::Label lm_title;
Gtk::Label lm_results;
Gtk::Table lm_table;
@@ -106,7 +106,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
/* MIDI Tab */
Gtk::VBox midi_vbox;
- Gtk::Button midi_refresh_button;
+ Gtk::Button midi_back_button;
Gtk::Table midi_device_table;
/* MIDI ... JACK */
@@ -145,6 +145,35 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void list_devices ();
void show_buffer_duration ();
+ void configure_midi_devices ();
+
+ struct MidiDeviceSetting {
+ std::string name;
+ bool enabled;
+ uint32_t input_latency;
+ uint32_t output_latency;
+
+ MidiDeviceSetting (std::string n, bool en = true, uint32_t inl = 0, uint32_t oul = 0)
+ : name (n)
+ , enabled (en)
+ , input_latency (inl)
+ , output_latency (oul)
+ {}
+ };
+
+ typedef boost::shared_ptr<MidiDeviceSetting> MidiDeviceSettings;
+ bool _can_set_midi_latencies;
+ std::vector<MidiDeviceSettings> _midi_devices;
+
+ MidiDeviceSettings find_midi_device(std::string devicename) const {
+ for (std::vector<MidiDeviceSettings>::const_iterator p = _midi_devices.begin(); p != _midi_devices.end(); ++p) {
+ if ((*p)->name == devicename) {
+ return *p;
+ }
+ }
+ return MidiDeviceSettings();
+ }
+
struct State {
std::string backend;
std::string driver;
@@ -157,6 +186,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
uint32_t output_channels;
bool active;
std::string midi_option;
+ std::vector<MidiDeviceSettings> midi_devices;
State()
: input_latency (0)
@@ -215,8 +245,12 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void connect_disconnect_click ();
void calibrate_audio_latency ();
- void calibrate_midi_latency ();
- bool _measure_midi;
+ void calibrate_midi_latency (MidiDeviceSettings);
+
+ MidiDeviceSettings _measure_midi;
+ void midi_latency_adjustment_changed(Gtk::Adjustment *, MidiDeviceSettings, bool);
+ bool midi_device_enabled_toggled(GdkEventButton* ev, ArdourButton *, MidiDeviceSettings);
+ sigc::connection lm_back_button_signal;
};
#endif /* __gtk2_ardour_engine_dialog_h__ */