// 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();
render_window = 0;
asset = 0;
result = 0;
+ beep = 0;
}
Render::~Render()
void Render::handle_done_event(int result)
{
if(!result) {
+ mwindow->edl->session->render_beep = beep;
// add to recentlist only on OK
render_window->render_format->path_recent->
add_item(File::formattostr(asset->format), asset->path);
}
}
-
-
int Render::check_asset(EDL *edl, Asset &asset)
{
if(asset.video_data &&
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()
- 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();
}
}
}
render->completion->unlock();
+
+ if( render->mode == Render::INTERACTIVE && render->beep )
+ mwindow->beep(3000., 1.5, 0.5);
}
if( is_image )
render->range_type = RANGE_1FRAME;
- int x1 = x + title->get_w() + 20;
+ int x1 = x + title->get_w() + 20, y1 = y;
add_subwindow(rangeproject = new RenderRangeProject(this,
render->range_type == RANGE_PROJECT, x1, y));
+ int x2 = x1 + rangeproject->get_w();
y += 20;
add_subwindow(rangeselection = new RenderRangeSelection(this,
render->range_type == RANGE_SELECTION, x1, y));
+ int x3 = x1 + rangeselection->get_w();
+ if( x2 < x3 ) x2 = x3;
y += 20;
add_subwindow(rangeinout = new RenderRangeInOut(this,
render->range_type == RANGE_INOUT, x1, y));
+ x3 = x1 + rangeinout->get_w();
+ if( x2 < x3 ) x2 = x3;
y += 20;
add_subwindow(range1frame = new RenderRange1Frame(this,
render->range_type == RANGE_1FRAME, x1, y));
+ x3 = x1 + range1frame->get_w();
+ if( x2 < x3 ) x2 = x3;
y += 30;
-
if( is_image )
enable_render_range(0);
+ x1 = x2 + 20;
+ render->beep = mwindow->edl->session->render_beep;
+ add_subwindow(beep_on_done = new RenderBeepOnDone(this, x1, y1));
+
renderprofile = new RenderProfile(mwindow, this, x, y, 1);
renderprofile->create_objects();
y += 70;
render_window->enable_render_range(1);
}
+RenderBeepOnDone::RenderBeepOnDone(RenderWindow *rwindow, int x, int y)
+ : BC_CheckBox(x, y, rwindow->render->beep, _("Beep on done"))
+{
+ this->rwindow = rwindow;
+}
+
+int RenderBeepOnDone::handle_event()
+{
+ rwindow->render->beep = get_value();
+ return 1;
+}
+
+