X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=5c07480e249799bbc242512d11764591a357cc6e;hb=a718f58e6d8061f83bd0c0b10848ac415cd21fcd;hp=f97ef3c28e1a82c2b2b3be67e7984fab6014dfb6;hpb=6ad20126d5f82618e5dd4dd2d14b0682a5529d17;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index f97ef3c2..5c07480e 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -1793,8 +1793,8 @@ void Track::set_camera(float x, float y, float z) int Track::is_hidden() { if( master ) return 0; - if( edl->session->gang_tracks == GANG_MEDIA ) return 1; - if( edl->session->gang_tracks == GANG_CHANNELS ) { + if( edl->local_session->gang_tracks == GANG_MEDIA ) return 1; + if( edl->local_session->gang_tracks == GANG_CHANNELS ) { for( Track *track=previous; track; track=track->previous ) { if( track->data_type == data_type ) return 1; if( track->master ) return 0; @@ -1806,13 +1806,13 @@ int Track::is_hidden() Track *Track::gang_master() { Track *track = this; - switch( edl->session->gang_tracks ) { + switch( edl->local_session->gang_tracks ) { case GANG_NONE: return track; case GANG_CHANNELS: { Track *current = track; int data_type = track->data_type; - while( current && !track->master ) { + while( current && !current->master ) { if( !(current = current->previous) ) break; if( current->data_type == data_type ) track = current; } @@ -1827,7 +1827,7 @@ Track *Track::gang_master() int Track::in_gang(Track *track) { - if( edl->session->gang_tracks == GANG_NONE ) return ganged; + if( edl->local_session->gang_tracks == GANG_NONE ) return ganged; Track *current = this; while( current && !current->master ) current = current->previous; while( track && !track->master ) track = track->previous; @@ -1836,18 +1836,20 @@ int Track::in_gang(Track *track) int Track::is_armed() { - return gang_master()->armed; + return armed && gang_master()->armed; } int Track::is_ganged() { - return gang_master()->ganged; + return ganged && gang_master()->ganged; } int Track::armed_gang(Track *track) { - if( edl->session->gang_tracks == GANG_NONE ) return ganged; + if( !track->ganged ) return 0; + if( edl->local_session->gang_tracks == GANG_NONE ) return ganged; Track *current = gang_master(); + if( !current->ganged ) return 0; for(;;) { if( track == current ) return 1; current = current->next; @@ -1856,6 +1858,10 @@ int Track::armed_gang(Track *track) return 1; } +int Track::plays() +{ + return play && gang_master()->play; +} int Track::index_in(Mixer *mixer) {