X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fvrender.C;h=be3d0c3beee90073fffcfb9bc4d4e5cf0bcad2d0;hb=50ec1e03e96a60403af08a7bae34015c9b234902;hp=43893b2770106845d2fbe6533eadb657bc1e3d81;hpb=b5bfe3e40a7255ae60a21d885587ada6e145e3d5;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/vrender.C b/cinelerra-5.1/cinelerra/vrender.C index 43893b27..be3d0c3b 100644 --- a/cinelerra-5.1/cinelerra/vrender.C +++ b/cinelerra-5.1/cinelerra/vrender.C @@ -133,7 +133,8 @@ int VRender::process_buffer(int64_t input_position, int use_vconsole = 1; int use_brender = 0; int result = 0; - int use_cache = renderengine->command->single_frame(); + int use_cache = renderengine->command->single_frame() ? 1 : + renderengine->command->get_direction() == PLAY_REVERSE ? -1 : 0; // int use_asynchronous = // renderengine->command->realtime && // renderengine->get_edl()->session->video_every_frame && @@ -288,7 +289,7 @@ int VRender::get_colormodel(VEdit *playable_edit, int use_vconsole, int use_bren void VRender::run() { - int reconfigure; + int reconfigure = 1; const int debug = 0; // Want to know how many samples rendering each frame takes. @@ -322,13 +323,13 @@ void VRender::run() // Want the condition before, since only 1 frame is rendered // and the number of frames skipped after this frame varies. current_input_length = 1; - - reconfigure = vconsole->test_reconfigure(current_position, - current_input_length); - - + if( !reconfigure ) reconfigure = + vconsole->test_reconfigure(current_position, current_input_length); if(debug) printf("VRender::run %d\n", __LINE__); - if(reconfigure) restart_playback(); + if( reconfigure ) { + restart_playback(); + reconfigure = 0; + } if(debug) printf("VRender::run %d\n", __LINE__); process_buffer(current_position, use_opengl);