X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frenderengine.C;h=721e3be85c9e77759604a12742bc37828004d906;hb=6853a2c0b04cc5ff4e87a2022c914227f925cb7f;hp=6bba1270831170ccf60a0ec3e21a46c42d7f96f3;hpb=efc8fa7dc7ddcdeaa9398e09d81975a6ccf526fc;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/renderengine.C b/cinelerra-5.1/cinelerra/renderengine.C index 6bba1270..721e3be8 100644 --- a/cinelerra-5.1/cinelerra/renderengine.C +++ b/cinelerra-5.1/cinelerra/renderengine.C @@ -73,7 +73,7 @@ RenderEngine::RenderEngine(PlaybackEngine *playback_engine, start_lock = new Condition(1, "RenderEngine::start_lock"); output_lock = new Condition(1, "RenderEngine::output_lock"); render_active = new Condition(1,"RenderEngine::render_active"); - interrupt_lock = new Mutex("RenderEngine::interrupt_lock"); + interrupt_lock = new Condition(1, "RenderEngine::interrupt_lock"); first_frame_lock = new Condition(1, "RenderEngine::first_frame_lock"); } @@ -516,7 +516,7 @@ void RenderEngine::run() // Fix the tracking position if(playback_engine) { - if(command->command == CURRENT_FRAME) + if(command->command == CURRENT_FRAME || command->command == LAST_FRAME) { //printf("RenderEngine::run 4.1 %d\n", playback_engine->tracking_position); playback_engine->tracking_position = command->playbackstart; @@ -527,17 +527,9 @@ void RenderEngine::run() //printf("RenderEngine::run 4.1 %d\n", playback_engine->tracking_position); if(!interrupted) { - if(do_audio) - playback_engine->tracking_position = - (double)arender->current_position / - command->get_edl()->session->sample_rate; - else - if(do_video) - { - playback_engine->tracking_position = - (double)vrender->current_position / - command->get_edl()->session->frame_rate; - } + playback_engine->tracking_position = + command->get_direction() == PLAY_FORWARD ? + command->end_position : command->start_position; } if( playback_engine->is_playing_back && command->displacement ) {