mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-22 22:56:32 +01:00
ensure that Session handles tempo map changes synchronously in the main RT process thread
This commit is contained in:
parent
10dc09fcd4
commit
22b50c1716
4 changed files with 8 additions and 8 deletions
|
|
@ -1384,6 +1384,7 @@ protected:
|
||||||
void set_transport_speed (double speed);
|
void set_transport_speed (double speed);
|
||||||
void set_default_play_speed (double spd);
|
void set_default_play_speed (double spd);
|
||||||
bool need_declick_before_locate () const;
|
bool need_declick_before_locate () const;
|
||||||
|
void tempo_map_changed ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int create (const std::string& mix_template, BusProfile const *, bool unnamed);
|
int create (const std::string& mix_template, BusProfile const *, bool unnamed);
|
||||||
|
|
@ -1892,8 +1893,6 @@ private:
|
||||||
int send_full_time_code (samplepos_t, pframes_t nframes);
|
int send_full_time_code (samplepos_t, pframes_t nframes);
|
||||||
void send_song_position_pointer (samplepos_t);
|
void send_song_position_pointer (samplepos_t);
|
||||||
|
|
||||||
void tempo_map_changed ();
|
|
||||||
|
|
||||||
/* edit/mix groups */
|
/* edit/mix groups */
|
||||||
|
|
||||||
int load_route_groups (const XMLNode&, int);
|
int load_route_groups (const XMLNode&, int);
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,13 @@ AudioEngine::process_callback (pframes_t nframes)
|
||||||
thread_init_callback (NULL);
|
thread_init_callback (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
Temporal::TempoMap::fetch ();
|
Temporal::TempoMap::SharedPtr current_map = Temporal::TempoMap::read ();
|
||||||
|
if (current_map != Temporal::TempoMap::use()) {
|
||||||
|
Temporal::TempoMap::set (current_map);
|
||||||
|
if (_session) {
|
||||||
|
_session->tempo_map_changed ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* This is for JACK, where the latency callback arrives in sync with
|
/* This is for JACK, where the latency callback arrives in sync with
|
||||||
* port registration (usually while ardour holds the process-lock
|
* port registration (usually while ardour holds the process-lock
|
||||||
|
|
|
||||||
|
|
@ -476,8 +476,6 @@ Session::Session (AudioEngine &eng,
|
||||||
Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Session::config_changed, this, _1, false));
|
Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Session::config_changed, this, _1, false));
|
||||||
config.ParameterChanged.connect_same_thread (*this, boost::bind (&Session::config_changed, this, _1, true));
|
config.ParameterChanged.connect_same_thread (*this, boost::bind (&Session::config_changed, this, _1, true));
|
||||||
|
|
||||||
TempoMap::MapChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this));
|
|
||||||
|
|
||||||
if (was_dirty) {
|
if (was_dirty) {
|
||||||
DirtyChanged (); /* EMIT SIGNAL */
|
DirtyChanged (); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1628,10 +1628,7 @@ Session::implement_master_strategy ()
|
||||||
void
|
void
|
||||||
Session::sync_cues ()
|
Session::sync_cues ()
|
||||||
{
|
{
|
||||||
std::cerr << "Need to sync cues!\n";
|
|
||||||
|
|
||||||
_locations->apply (*this, &Session::sync_cues_from_list);
|
_locations->apply (*this, &Session::sync_cues_from_list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct LocationByTime
|
struct LocationByTime
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue