summaryrefslogtreecommitdiff
path: root/gtk2_ardour/option_editor.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2012-11-13 20:29:28 +0000
committerRobin Gareus <robin@gareus.org>2012-11-13 20:29:28 +0000
commite1581242ca8554660ea68290688e573a9acfca06 (patch)
tree49099b7fa12f4c0732dcc635fda59e448c1e5ea3 /gtk2_ardour/option_editor.cc
parentf761de0d70b896c4a3437f99b238effac520519d (diff)
implement TC offset for slave&generator.
Many related changes that require atomic update, mostly because ClockOption slots changed: * change offset config format to std:string (backwards compat - reads 0) * make Timecode offset independent from fps * sample_to_timecode() handle negative sample-num * audio-clock fix entry and edit of negative numbers * option editor: - remove old global internal offset - add slave & generator TC entry - still needs UI cleanup, tooltops, maybe sep. tab.. * LTC & MTC slave& generator: - cache offset - subscribe to parameter changes git-svn-id: svn://localhost/ardour2/branches/3.0@13485 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/option_editor.cc')
-rw-r--r--gtk2_ardour/option_editor.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index 3c3f5baab6..da4594e6da 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -25,6 +25,7 @@
#include "ardour/rc_configuration.h"
#include "ardour/utils.h"
#include "ardour/dB.h"
+#include "ardour/session.h"
#include "option_editor.h"
#include "gui_thread.h"
@@ -284,7 +285,7 @@ FaderOption::add_to_page (OptionEditorPage* p)
add_widgets_to_page (p, &_label, &_box);
}
-ClockOption::ClockOption (string const & i, string const & n, sigc::slot<framecnt_t> g, sigc::slot<bool, framecnt_t> s)
+ClockOption::ClockOption (string const & i, string const & n, sigc::slot<std::string> g, sigc::slot<bool, std::string> s)
: Option (i, n)
, _clock (X_("timecode-offset"), false, X_(""), true, false, true, false)
, _get (g)
@@ -299,13 +300,24 @@ ClockOption::ClockOption (string const & i, string const & n, sigc::slot<framecn
void
ClockOption::set_state_from_config ()
{
- _clock.set (_get (), true);
+ Timecode::Time TC;
+ framepos_t when;
+ if (!Timecode::parse_timecode_format(_get(), TC)) {
+ _clock.set (0, true);
+ }
+ TC.rate = _session->frames_per_timecode_frame();
+ TC.drop = _session->timecode_drop_frames();
+ _session->timecode_to_sample(TC, when, false, false);
+ if (TC.negative) { when=-when; }
+ _clock.set (when, true);
}
void
ClockOption::save_clock_time ()
{
- _set (_clock.current_time());
+ Timecode::Time TC;
+ _session->sample_to_timecode(_clock.current_time(), TC, false, false);
+ _set (Timecode::timecode_format_time(TC));
}
void
@@ -317,6 +329,7 @@ ClockOption::add_to_page (OptionEditorPage* p)
void
ClockOption::set_session (Session* s)
{
+ _session = s;
_clock.set_session (s);
}