X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fautos.C;h=b895a9049085c03a99db492cc171c90ace8fa2c3;hb=ad2996ab94e6e12c9c14a5b9f14792f76111dff7;hp=1f169df2d2a10edcccb2b95991905ea2e94eae65;hpb=c4bf1f625b640ef45136dcf66b639e2a55bd8334;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/autos.C b/cinelerra-5.1/cinelerra/autos.C index 1f169df2..b895a904 100644 --- a/cinelerra-5.1/cinelerra/autos.C +++ b/cinelerra-5.1/cinelerra/autos.C @@ -204,7 +204,7 @@ Auto* Autos::get_prev_auto(int64_t position, while(current && current->position > position) current = PREVIOUS; } - if(!current) + if(!current && first && first->position <= position) { for(current = last; current && current->position > position; @@ -222,7 +222,7 @@ Auto* Autos::get_prev_auto(int64_t position, while(current && current->position < position) current = NEXT; } - if(!current) + if(!current && last && last->position >= position) { for(current = first; current && current->position < position; @@ -288,12 +288,11 @@ Auto* Autos::get_auto_for_editing(double position) Auto *result = 0; get_prev_auto(track->to_units(position, 0), PLAY_FORWARD, result); + if( edl->session->auto_keyframes && (!result || result->is_default || + !EQUIV(track->from_units(result->position), position)) ) { //printf("Autos::get_auto_for_editing %p %p %p\n", default_auto, first, result); - if( !result || !EQUIV(track->from_units(result->position), position) ) { - if( edl->session->auto_keyframes ) { - position = edl->align_to_frame(position, 0); - result = insert_auto(track->to_units(position, 0)); - } + position = edl->align_to_frame(position, 0); + result = insert_auto(track->to_units(position, 0)); } //printf("Autos::get_auto_for_editing %p %p\n", first, default_auto); @@ -311,7 +310,7 @@ Auto* Autos::get_next_auto(int64_t position, int direction, Auto* ¤t, int while(current && current->position < position) current = NEXT; } - if(!current) + if(!current && last && last->position > position) { for(current = first; current && current->position <= position; @@ -330,7 +329,7 @@ Auto* Autos::get_next_auto(int64_t position, int direction, Auto* ¤t, int while(current && current->position > position) current = PREVIOUS; } - if(!current) + if(!current && first && first->position <= position) { for(current = last; current && current->position > position;