summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-01-07 22:10:36 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-01-07 22:10:36 +0000
commitb46af2167fbf4763595385fb9be46762ab3c3d07 (patch)
tree30d79dbdf5ce8ff01b6cb9111ef5adc12f3b27e7
parent27e84e85f2dfa25f4c2c1a1f65fbe6d2abf0ac9e (diff)
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
-rw-r--r--gtk2_ardour/SConscript1
-rwxr-xr-xgtk2_ardour/ardev2
-rw-r--r--gtk2_ardour/ardour_ui.cc34
-rw-r--r--gtk2_ardour/ardour_ui.h3
-rw-r--r--gtk2_ardour/audio_clock.h2
-rw-r--r--gtk2_ardour/editor_rulers.cc2
-rw-r--r--gtk2_ardour/enums.h2
-rw-r--r--gtk2_ardour/main.cc22
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 <pbd/compose.h>
#include <pbd/pathscanner.h>
#include <pbd/failed_constructor.h>
+#include <pbd/enumwriter.h>
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/click_box.h>
@@ -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;