ffmpeg filter memory leak, cursor hopper fix, added leaker.C, misc fixes
[goodguy/history.git] / cinelerra-5.1 / cinelerra / autos.C
index 36abbd7dc756041d1d1cb1a356f24bb312508a70..1f169df2d2a10edcccb2b95991905ea2e94eae65 100644 (file)
@@ -282,29 +282,21 @@ Auto* Autos::get_auto_at_position(double position)
 
 Auto* Autos::get_auto_for_editing(double position)
 {
-       if(position < 0)
-       {
+       if(position < 0) {
                position = edl->local_session->get_selectionstart(1);
        }
 
        Auto *result = 0;
-       position = edl->align_to_frame(position, 0);
-
-
-
-
-//printf("Autos::get_auto_for_editing %p %p\n", first, default_auto);
-
-       if(edl->session->auto_keyframes)
-       {
-               result = insert_auto(track->to_units(position, 0));
+       get_prev_auto(track->to_units(position, 0), PLAY_FORWARD, result);
+//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));
+               }
        }
-       else
-               result = get_prev_auto(track->to_units(position, 0),
-                       PLAY_FORWARD,
-                       result);
+//printf("Autos::get_auto_for_editing %p %p\n", first, default_auto);
 
-//printf("Autos::get_auto_for_editing %p %p %p\n", default_auto, first, result);
        return result;
 }