From b46af2167fbf4763595385fb9be46762ab3c3d07 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 7 Jan 2007 22:10:36 +0000 Subject: [PATCH] fix startup order (ARDOUR::init() vs. AudioEngine creation); start work on clock state saving git-svn-id: svn://localhost/ardour2/trunk@1281 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/SConscript | 1 + gtk2_ardour/ardev | 2 +- gtk2_ardour/ardour_ui.cc | 34 ++++++++++++++++++++++++++++++++++ gtk2_ardour/ardour_ui.h | 3 +++ gtk2_ardour/audio_clock.h | 2 +- gtk2_ardour/editor_rulers.cc | 2 +- gtk2_ardour/enums.h | 2 ++ gtk2_ardour/main.cc | 22 ++++++++++++---------- 8 files changed, 55 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 94e558bbe6..ee2372b760 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -110,6 +110,7 @@ color_manager.cc crossfade_edit.cc crossfade_view.cc curvetest.cc +enums.cc editing.cc editor.cc editor_actions.cc diff --git a/gtk2_ardour/ardev b/gtk2_ardour/ardev index ff68e11fbe..3b65b2ec79 100755 --- a/gtk2_ardour/ardev +++ b/gtk2_ardour/ardev @@ -1,3 +1,3 @@ #!/bin/sh . `dirname "$0"`/ardev_common.sh -exec $EXECUTABLE $* +exec $EXECUTABLE "$*" diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 6f4d50aa02..e47acd1e2f 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -2429,3 +2430,36 @@ ARDOUR_UI::first_idle () can_save_keybindings = true; return false; } + +void +ARDOUR_UI::store_clock_modes () +{ + XMLNode* node = new XMLNode(X_("ClockModes")); + + node->add_property (X_("primary"), enum_2_string (primary_clock.mode())); + node->add_property (X_("secondary"), enum_2_string (secondary_clock.mode())); + + session->add_extra_xml (*node); + session->set_dirty (); +} + +void +ARDOUR_UI::restore_clock_modes () +{ + XMLProperty* prop; + XMLNode * node = session->extra_xml (X_("ClockModes")); + AudioClock::Mode mode; + + if (node) { + if ((prop = node->property ("primary")) != 0) { + mode = AudioClock::Mode (string_2_enum (prop->value(), mode)); + primary_clock.set_mode (mode); + } + + if ((prop = node->property ("secondary")) != 0) { + mode = AudioClock::Mode (string_2_enum (prop->value(), mode)); + secondary_clock.set_mode (mode); + } + } +} + diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index e9fda8617c..2b83262451 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -184,6 +184,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI AudioClock preroll_clock; AudioClock postroll_clock; + void store_clock_modes (); + void restore_clock_modes (); + void add_route (); void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many) { diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index 6ac97a5624..cef5a1b524 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -61,7 +61,7 @@ class AudioClock : public Gtk::HBox private: ARDOUR::Session *session; Mode _mode; - uint32_t key_entry_state; + uint32_t key_entry_state; bool is_duration; bool editable; diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index ee0ba1d024..8e1a65b856 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -467,7 +467,7 @@ Editor::store_ruler_visibility () session->add_extra_xml (*node); session->set_dirty (); } - + void Editor::restore_ruler_visibility () { diff --git a/gtk2_ardour/enums.h b/gtk2_ardour/enums.h index 5b097d059a..987c49fe06 100644 --- a/gtk2_ardour/enums.h +++ b/gtk2_ardour/enums.h @@ -32,4 +32,6 @@ struct SelectionRect { uint32_t id; }; +extern void setup_gtk_ardour_enums (); + #endif /* __ardour_gtk_enums_h__ */ diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index 1004de19c2..78be61231c 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -48,6 +48,7 @@ #include "version.h" #include "ardour_ui.h" #include "opts.h" +#include "enums.h" #include "i18n.h" @@ -429,20 +430,21 @@ int main (int argc, char *argv[]) } } - - try { - engine = new ARDOUR::AudioEngine (jack_client_name); - } catch (AudioEngine::NoBackendAvailable& err) { - gui_jack_error (); - error << string_compose (_("Could not connect to JACK server as \"%1\""), jack_client_name) << endmsg; - return -1; - } - - try { ARDOUR::init (use_vst, try_hw_optimization); + setup_gtk_ardour_enums (); Config->set_current_owner (ConfigVariableBase::Interface); + + try { + engine = new ARDOUR::AudioEngine (jack_client_name); + } catch (AudioEngine::NoBackendAvailable& err) { + gui_jack_error (); + error << string_compose (_("Could not connect to JACK server as \"%1\""), jack_client_name) << endmsg; + return -1; + } + ui->set_engine (*engine); + } catch (failed_constructor& err) { error << _("could not initialize Ardour.") << endmsg; return -1;