X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frender.C;h=5b35292404b0f040ae6ae333433c479ba5a6ca60;hb=114b45040c8027671cbe50e7d6cecb28bf73b35f;hp=17fd1f89a33f8995c6a5dda4c6f99af80f0d9eeb;hpb=047485402c380ee034045712121c649ddf89eda4;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C index 17fd1f89..5b352924 100644 --- a/cinelerra-5.1/cinelerra/render.C +++ b/cinelerra-5.1/cinelerra/render.C @@ -187,35 +187,7 @@ void MainPackageRenderer::set_progress(int64_t value) // If non interactive, print progress out if(!render->progress) - { - int64_t current_eta = render->progress_timer->get_scaled_difference(1000); - if(current_eta - render->last_eta > 1000) - { - double eta = 0; - - - if(render->total_rendered) - { - eta = current_eta / - 1000 * - render->progress_max / - render->total_rendered - - current_eta / - 1000; - } - - char string[BCTEXTLEN]; - Units::totext(string, - eta, - TIME_HMS2); - - printf("\r%d%% %s: %s ", - (int)(100 * (float)render->total_rendered / render->progress_max), - _("ETA"), string); - fflush(stdout); - render->last_eta = current_eta; - } - } + render->show_progress(); render->counter_lock->unlock(); @@ -431,8 +403,6 @@ void Render::stop_operation() } } - - int Render::check_asset(EDL *edl, Asset &asset) { if(asset.video_data && @@ -528,6 +498,19 @@ void Render::stop_progress() progress = 0; } +void Render::show_progress() +{ + int64_t current_eta = progress_timer->get_scaled_difference(1000); + if (current_eta - last_eta < 1000 ) return; + double eta = !total_rendered ? 0 : + current_eta / 1000. * (progress_max / (double)total_rendered - 1.); + char string[BCTEXTLEN]; Units::totext(string, eta, TIME_HMS2); + printf("\r%d%% %s: %s ", + (int)(100 * (float)total_rendered / progress_max), _("ETA"), string); + fflush(stdout); + last_eta = current_eta; +} + void Render::start_render() @@ -879,8 +862,14 @@ printf("Render::render_single: Session finished.\n"); - if(strategy == SINGLE_PASS_FARM || strategy == FILE_PER_LABEL_FARM) - { + if( strategy == SINGLE_PASS_FARM || + strategy == FILE_PER_LABEL_FARM ) { + if( !render->progress ) { + while( farm_server->active_clients() > 0 ) { + sleep(1); + render->show_progress(); + } + } farm_server->wait_clients(); render->result |= render->packages->packages_are_done(); }