libardour support for propagating track time domain changes into playlists and thence regions
This commit is contained in:
parent
7fe3becf2d
commit
3d64972ca2
@ -178,6 +178,8 @@ public:
|
|||||||
void adjust_playback_buffering ();
|
void adjust_playback_buffering ();
|
||||||
void adjust_capture_buffering ();
|
void adjust_capture_buffering ();
|
||||||
|
|
||||||
|
void time_domain_changed ();
|
||||||
|
|
||||||
PBD::Signal0<void> FreezeChange;
|
PBD::Signal0<void> FreezeChange;
|
||||||
PBD::Signal0<void> PlaylistChanged;
|
PBD::Signal0<void> PlaylistChanged;
|
||||||
PBD::Signal0<void> PlaylistAdded;
|
PBD::Signal0<void> PlaylistAdded;
|
||||||
|
@ -3516,6 +3516,7 @@ Playlist::globally_change_time_domain (Temporal::TimeDomain from, Temporal::Time
|
|||||||
void
|
void
|
||||||
Playlist::time_domain_changed ()
|
Playlist::time_domain_changed ()
|
||||||
{
|
{
|
||||||
|
std::cerr << this << " playlist gets td change\n";
|
||||||
using namespace Temporal;
|
using namespace Temporal;
|
||||||
|
|
||||||
TimeDomainProvider::time_domain_changed ();
|
TimeDomainProvider::time_domain_changed ();
|
||||||
@ -3523,6 +3524,8 @@ Playlist::time_domain_changed ()
|
|||||||
Temporal::TimeDomain to = time_domain();
|
Temporal::TimeDomain to = time_domain();
|
||||||
Temporal::TimeDomain from = (to == AudioTime ? BeatTime : AudioTime);
|
Temporal::TimeDomain from = (to == AudioTime ? BeatTime : AudioTime);
|
||||||
|
|
||||||
|
std::cerr << "playlist new domain " << to << " old domain " << from << " have domain " << has_own_time_domain() << std::endl;
|
||||||
|
|
||||||
for (auto & region : regions) {
|
for (auto & region : regions) {
|
||||||
region->change_time_domain (from, to);
|
region->change_time_domain (from, to);
|
||||||
}
|
}
|
||||||
|
@ -2209,6 +2209,7 @@ Region::globally_change_time_domain (Temporal::TimeDomain from, Temporal::TimeDo
|
|||||||
void
|
void
|
||||||
Region::change_time_domain (Temporal::TimeDomain from, Temporal::TimeDomain to)
|
Region::change_time_domain (Temporal::TimeDomain from, Temporal::TimeDomain to)
|
||||||
{
|
{
|
||||||
|
std::cerr << name() << " change td to " << to << std::endl;
|
||||||
if (_length.val().time_domain() == from) {
|
if (_length.val().time_domain() == from) {
|
||||||
timecnt_t& l (_length.non_const_val());
|
timecnt_t& l (_length.non_const_val());
|
||||||
l.set_time_domain (to);
|
l.set_time_domain (to);
|
||||||
|
@ -717,7 +717,7 @@ Track::use_playlist (DataType dt, std::shared_ptr<Playlist> p, bool set_orig)
|
|||||||
* has an actual parent, revert to using its parent's domain
|
* has an actual parent, revert to using its parent's domain
|
||||||
*/
|
*/
|
||||||
if (old->time_domain_parent()) {
|
if (old->time_domain_parent()) {
|
||||||
old->clear_time_domain ();
|
old->clear_time_domain_parent ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -733,7 +733,10 @@ Track::use_playlist (DataType dt, std::shared_ptr<Playlist> p, bool set_orig)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (!p->time_domain_parent() || p->time_domain_parent() == &_session) {
|
if (!p->time_domain_parent() || p->time_domain_parent() == &_session) {
|
||||||
p->set_time_domain (time_domain());
|
/* XXX DANGER : track could go away leaving playlist
|
||||||
|
* with dead parent time domain provider
|
||||||
|
*/
|
||||||
|
p->set_time_domain_parent (*this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1183,3 +1186,30 @@ Track::use_captured_audio_sources (SourceList& srcs, CaptureInfos const & captur
|
|||||||
pl->set_capture_insertion_in_progress (false);
|
pl->set_capture_insertion_in_progress (false);
|
||||||
_session.add_command (new StatefulDiffCommand (pl));
|
_session.add_command (new StatefulDiffCommand (pl));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Track::time_domain_changed ()
|
||||||
|
{
|
||||||
|
Route::time_domain_changed ();
|
||||||
|
|
||||||
|
std::cerr << this << " td changed to " << time_domain() << std::endl;
|
||||||
|
|
||||||
|
std::shared_ptr<Playlist> pl = _playlists[DataType::AUDIO];
|
||||||
|
if (pl) {
|
||||||
|
std::cerr << "Call for audio\n";
|
||||||
|
if (pl->time_domain_parent() == this) {
|
||||||
|
pl->time_domain_changed ();
|
||||||
|
} else {
|
||||||
|
std::cerr << "skip that pl\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pl = _playlists[DataType::MIDI];
|
||||||
|
if (pl) {
|
||||||
|
std::cerr << "Call for MIDI\n";
|
||||||
|
if (pl->time_domain_parent() == this) {
|
||||||
|
pl->time_domain_changed ();
|
||||||
|
} else {
|
||||||
|
std::cerr << "skip that pl\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user