X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaybackengine.C;h=71cd3911c33cba6aaf09419f10c2c333be4febd1;hb=803cf48f8f7ee246eb5473e55fc2125e8b398250;hp=b0c9fe3e1258bc81eaece7a2b73c7b9a0062cb81;hpb=60f8df69db9ddd8148bfc41a17bb0955b52a45e6;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/playbackengine.C b/cinelerra-5.1/cinelerra/playbackengine.C index b0c9fe3e..71cd3911 100644 --- a/cinelerra-5.1/cinelerra/playbackengine.C +++ b/cinelerra-5.1/cinelerra/playbackengine.C @@ -390,6 +390,7 @@ void PlaybackEngine::run() break; case CURRENT_FRAME: + case LAST_FRAME: last_command = command->command; perform_change(); arm_render_engine(); @@ -457,6 +458,8 @@ void PlaybackEngine::issue_command(EDL *edl, int command, int wait_tracking, case SLOW_FWD: case NORMAL_FWD: case FAST_FWD: + case CURRENT_FRAME: + case LAST_FRAME: if( !prev_single_frame && prev_command == command && cur_audio == prev_audio ) { @@ -475,6 +478,8 @@ void PlaybackEngine::issue_command(EDL *edl, int command, int wait_tracking, case COMMAND_NONE: case SINGLE_FRAME_FWD: case SINGLE_FRAME_REWIND: + case CURRENT_FRAME: + case LAST_FRAME: // Start from scratch que->send_command(command, CHANGE_NONE, edl, 1, resume, use_inout, toggle_audio, loop_play, @@ -497,8 +502,9 @@ void PlaybackEngine::issue_command(EDL *edl, int command, int wait_tracking, } } -void PlaybackEngine::refresh_frame(int change_type, EDL *edl) +void PlaybackEngine::refresh_frame(int change_type, EDL *edl, int dir) { - que->send_command(CURRENT_FRAME, change_type, edl, 1); + que->send_command(dir >= 0 ? CURRENT_FRAME : LAST_FRAME, + change_type, edl, 1); }