X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fbackends%2Fjack%2Fjack_session.cc;h=778e23b7f65b9bdb323ff13cd9a6d829d4db6da4;hb=c2652437da8786e1a1803486fddf131f20af98d3;hp=60d11a8f0c1e7452f779082522a9241637c45c0f;hpb=23e7cf10191270d70357ccf0ed9294f020c7b7ab;p=ardour.git diff --git a/libs/backends/jack/jack_session.cc b/libs/backends/jack/jack_session.cc index 60d11a8f0c..778e23b7f6 100644 --- a/libs/backends/jack/jack_session.cc +++ b/libs/backends/jack/jack_session.cc @@ -22,9 +22,6 @@ #include -#include -#include - #include "pbd/localtime_r.h" #include "ardour/audioengine.h" @@ -92,12 +89,12 @@ JACKSession::session_event (jack_session_event_t* event) } } - /* this won't be called if the port engine in use is not JACK, so we do + /* this won't be called if the port engine in use is not JACK, so we do not have to worry about the type of PortEngine::private_handle() */ jack_client_t* jack_client = (jack_client_t*) AudioEngine::instance()->port_engine().private_handle(); - + if (jack_client) { jack_session_reply (jack_client, event); } @@ -117,35 +114,35 @@ JACKSession::timebase_callback (jack_transport_state_t /*state*/, { Timecode::BBT_Time bbt; TempoMap& tempo_map (_session->tempo_map()); - framepos_t tf = _session->transport_frame (); + samplepos_t tf = _session->transport_sample (); /* BBT info */ TempoMetric metric (tempo_map.metric_at (tf)); - + try { - tempo_map.bbt_time_rt (tf, bbt); - + bbt = tempo_map.bbt_at_sample (tf); + pos->bar = bbt.bars; pos->beat = bbt.beats; pos->tick = bbt.ticks; - + // XXX still need to set bar_start_tick - + pos->beats_per_bar = metric.meter().divisions_per_bar(); pos->beat_type = metric.meter().note_divisor(); pos->ticks_per_beat = Timecode::BBT_Time::ticks_per_beat; - pos->beats_per_minute = metric.tempo().beats_per_minute(); - + pos->beats_per_minute = metric.tempo().note_types_per_minute(); + pos->valid = jack_position_bits_t (pos->valid | JackPositionBBT); - + } catch (...) { /* no message */ } #ifdef HAVE_JACK_VIDEO_SUPPORT //poke audio video ratio so Ardour can track Video Sync - pos->audio_frames_per_video_frame = _session->frame_rate() / _session->timecode_frames_per_second(); + pos->audio_frames_per_video_frame = _session->sample_rate() / _session->timecode_frames_per_second(); pos->valid = jack_position_bits_t (pos->valid | JackAudioVideoRatio); #endif