X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.cc;h=cfa8770ba393479c5c0b8babef2e98cd1729ee57;hb=4336bb25d739cd007811ccd0298a15acc5e20787;hp=73ed8e6a5dbb936399771a0840a2930426513088;hpb=f500846fd46d6eab97e5e02fd795b9a938464773;p=ardour.git diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 73ed8e6a5d..cfa8770ba3 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1101,11 +1101,11 @@ Editor::set_session (Session *t) _session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context()); if (Profile->get_sae()) { - BBT_Time bbt; + Timecode::BBT_Time bbt; bbt.bars = 0; bbt.beats = 0; bbt.ticks = 120; - nframes_t pos = _session->tempo_map().bbt_duration_at (0, bbt, 1); + framepos_t pos = _session->tempo_map().bbt_duration_at (0, bbt, 1); nudge_clock.set_mode(AudioClock::BBT); nudge_clock.set (pos, true, 0, AudioClock::BBT); @@ -2428,19 +2428,40 @@ Editor::timecode_snap_to_internal (framepos_t& start, int32_t direction, bool /* break; case SnapToTimecodeSeconds: + if (_session->config.get_timecode_offset_negative()) { + start += _session->config.get_timecode_offset (); + } else { + start -= _session->config.get_timecode_offset (); + } if (((direction == 0) && (start % one_timecode_second > one_timecode_second / 2)) || direction > 0) { start = (framepos_t) ceil ((double) start / one_timecode_second) * one_timecode_second; } else { start = (framepos_t) floor ((double) start / one_timecode_second) * one_timecode_second; } + + if (_session->config.get_timecode_offset_negative()) { + start -= _session->config.get_timecode_offset (); + } else { + start += _session->config.get_timecode_offset (); + } break; case SnapToTimecodeMinutes: + if (_session->config.get_timecode_offset_negative()) { + start += _session->config.get_timecode_offset (); + } else { + start -= _session->config.get_timecode_offset (); + } if (((direction == 0) && (start % one_timecode_minute > one_timecode_minute / 2)) || direction > 0) { start = (framepos_t) ceil ((double) start / one_timecode_minute) * one_timecode_minute; } else { start = (framepos_t) floor ((double) start / one_timecode_minute) * one_timecode_minute; } + if (_session->config.get_timecode_offset_negative()) { + start -= _session->config.get_timecode_offset (); + } else { + start += _session->config.get_timecode_offset (); + } break; default: fatal << "Editor::smpte_snap_to_internal() called with non-timecode snap type!" << endmsg;