diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-01-08 20:51:26 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-01-08 20:51:26 +0000 |
commit | ca49f7cba731bd443c4a62184c8dec892b4ce5e7 (patch) | |
tree | 5c10cc5b82b1e22a6a205c4843b1dc6343906d0a | |
parent | 57bafcd1f4277ba9805bfb4ed05b8eaffaa7a5ce (diff) |
fix audio clock restore, provide XMLNode::property (string) and speed up the property methods by not scanning the map twice. sorry about the recompile
git-svn-id: svn://localhost/ardour2/trunk@1286 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/audio_clock.cc | 2 | ||||
-rw-r--r-- | libs/pbd/pbd/xml++.h | 3 | ||||
-rw-r--r-- | libs/pbd/xml++.cc | 20 |
6 files changed, 31 insertions, 9 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 8d7e48bc1b..caf84bd1e3 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -248,9 +248,10 @@ ARDOUR_UI::set_engine (AudioEngine& e) throw failed_constructor(); } - /* listen to clock mode changes */ + /* set default clock modes */ - AudioClock::ModeChanged.connect (mem_fun (*this, &ARDOUR_UI::store_clock_modes)); + primary_clock.set_mode (AudioClock::SMPTE); + secondary_clock.set_mode (AudioClock::BBT); /* start the time-of-day-clock */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 27b852982a..a39bcb124d 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -325,9 +325,6 @@ ARDOUR_UI::setup_transport () ARDOUR_UI::Clock.connect (bind (mem_fun (primary_clock, &AudioClock::set), false)); ARDOUR_UI::Clock.connect (bind (mem_fun (secondary_clock, &AudioClock::set), false)); - primary_clock.set_mode (AudioClock::SMPTE); - secondary_clock.set_mode (AudioClock::BBT); - primary_clock.ValueChanged.connect (mem_fun(*this, &ARDOUR_UI::primary_clock_value_changed)); secondary_clock.ValueChanged.connect (mem_fun(*this, &ARDOUR_UI::secondary_clock_value_changed)); diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index a9a61176a9..140ee649ea 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -125,6 +125,13 @@ ARDOUR_UI::connect_to_session (Session *s) connect_dependents_to_session (s); + /* listen to clock mode changes. don't do this earlier because otherwise as the clocks + restore their modes or are explicitly set, we will cause the "new" mode to be saved + back to the session XML ("extra") state. + */ + + AudioClock::ModeChanged.connect (mem_fun (*this, &ARDOUR_UI::store_clock_modes)); + start_clocking (); start_blinking (); diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index 7ad7e4df65..66822289c2 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -599,7 +599,7 @@ AudioClock::set_session (Session *s) AudioClock::Mode amode; if (node) { - if ((prop = node->property (_name.c_str())) != 0) { + if ((prop = node->property (_name)) != 0) { amode = AudioClock::Mode (string_2_enum (prop->value(), amode)); set_mode (amode); } diff --git a/libs/pbd/pbd/xml++.h b/libs/pbd/pbd/xml++.h index 70e231e717..bf26a6f685 100644 --- a/libs/pbd/pbd/xml++.h +++ b/libs/pbd/pbd/xml++.h @@ -95,8 +95,11 @@ public: const XMLPropertyList & properties() const { return _proplist; }; XMLProperty *property(const char * ); + XMLProperty *property(const std::string&); const XMLProperty *property(const char * n) const { return ((XMLNode *) this)->property(n); }; + const XMLProperty *property(const std::string& ns) const + { return ((XMLNode *) this)->property(ns); }; XMLProperty *add_property(const char *, const string &); XMLProperty *add_property(const char *, const char * = ""); diff --git a/libs/pbd/xml++.cc b/libs/pbd/xml++.cc index 8d783d59f2..5507f658e9 100644 --- a/libs/pbd/xml++.cc +++ b/libs/pbd/xml++.cc @@ -289,11 +289,25 @@ XMLProperty * XMLNode::property(const char * n) { string ns(n); - if (_propmap.find(ns) == _propmap.end()) { - return 0; + map<string,XMLProperty*>::iterator iter; + + if ((iter = _propmap.find(ns)) != _propmap.end()) { + return iter->second; + } + + return 0; +} + +XMLProperty * +XMLNode::property(const string & ns) +{ + map<string,XMLProperty*>::iterator iter; + + if ((iter = _propmap.find(ns)) != _propmap.end()) { + return iter->second; } - return _propmap[ns]; + return 0; } XMLProperty * |