X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frender.C;h=cf0881080ac73bd7f55606ce22534f3bf9ca4573;hp=ded88a3f033f920d20c25ac85a1f0a0f24996839;hb=4b6c39e6cf4a3fd9c1b347db6de686ab55d6cac8;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C index ded88a3f..cf088108 100644 --- a/cinelerra-5.1/cinelerra/render.C +++ b/cinelerra-5.1/cinelerra/render.C @@ -82,7 +82,7 @@ RenderItem::RenderItem(MWindow *mwindow) - : BC_MenuItem(_("Render..."), _("Shift+R"), 'R') + : BC_MenuItem(_("Render..."), _("Shift-R"), 'R') { this->mwindow = mwindow; set_shift(1); @@ -209,10 +209,9 @@ void MainPackageRenderer::set_progress(int64_t value) eta, TIME_HMS2); - printf(_("\r%d%% ETA: %s "), (int)(100 * - (float)render->total_rendered / - render->progress_max), - string); + printf("\r%d%% %s: %s ", + (int)(100 * (float)render->total_rendered / render->progress_max), + _("ETA"), string); fflush(stdout); render->last_eta = current_eta; } @@ -270,9 +269,7 @@ void Render::start_interactive() mode = Render::INTERACTIVE; BC_DialogThread::start(); } - else if( render_window && !in_progress ) - render_window->raise_window(); - else { + else if( in_progress ) { ErrorBox error_box(_(PROGRAM_NAME ": Error"), mwindow->gui->get_abs_cursor_x(1), mwindow->gui->get_abs_cursor_y(1)); @@ -280,6 +277,9 @@ void Render::start_interactive() error_box.raise_window(); error_box.run_window(); } + else if( render_window ) { + render_window->raise_window(); + } } @@ -289,22 +289,22 @@ void Render::start_batches(ArrayList *jobs) { mode = Render::BATCH; batch_cancelled = 0; - // raise the window if rendering hasn't started yet - if( render_window && ! in_progress ) { - render_window->raise_window(); - } - else { - ErrorBox error_box(PROGRAM_NAME ": Error", - mwindow->gui->get_abs_cursor_x(1), - mwindow->gui->get_abs_cursor_y(1)); - error_box.create_objects("Already rendering"); - error_box.raise_window(); - error_box.run_window(); - } this->jobs = jobs; completion->reset(); start_render(); } + else if( in_progress ) { + ErrorBox error_box(_(PROGRAM_NAME ": Error"), + mwindow->gui->get_abs_cursor_x(1), + mwindow->gui->get_abs_cursor_y(1)); + error_box.create_objects("Already rendering"); + error_box.raise_window(); + error_box.run_window(); + } + // raise the window if rendering hasn't started yet + else if( render_window ) { + render_window->raise_window(); + } } void Render::start_batches(ArrayList *jobs, @@ -330,26 +330,31 @@ BC_Window* Render::new_gui() batch_cancelled = 0; format_error = 0; result = 0; - completion->reset(); if(mode == Render::INTERACTIVE) { // Fix the asset for rendering if(!asset) asset = new Asset; load_defaults(asset); check_asset(mwindow->edl, *asset); - + int px = mwindow->gui->get_pop_cursor_x(1); + int py = mwindow->gui->get_pop_cursor_y(1); // Get format from user - render_window = new RenderWindow(mwindow, - this, - asset, - mwindow->gui->get_abs_cursor_x(1), - mwindow->gui->get_abs_cursor_y(1)); + render_window = new RenderWindow(mwindow, this, asset, px, py); render_window->create_objects(); } return render_window; } +void Render::handle_done_event(int result) +{ + if(!result) { + // add to recentlist only on OK + render_window->format_tools->path_recent-> + add_item(File::formattostr(asset->format), asset->path); + } + render_window = 0; +} void Render::handle_close_event(int result) { @@ -357,9 +362,6 @@ void Render::handle_close_event(int result) const int debug = 0; if(!result) { - // add to recentlist only on OK - render_window->format_tools->path_recent-> - add_item(File::formattostr(asset->format), asset->path); // Check the asset format for errors. FormatCheck format_check(asset); format_error = format_check.check_format(); @@ -379,7 +381,6 @@ void Render::handle_close_event(int result) if(debug) printf("Render::handle_close_event %d\n", __LINE__); } //PRINT_TRACE - render_window = 0; } @@ -408,19 +409,11 @@ int Render::check_asset(EDL *edl, Asset &asset) asset.width = edl->session->output_w; asset.height = edl->session->output_h; asset.interlace_mode = edl->session->interlace_mode; - asset.tcstart = (int64_t) (edl->session->get_frame_offset() + - edl->local_session->get_selectionstart() * - edl->session->frame_rate); - asset.tcend = (int64_t) (edl->session->get_frame_offset() + - edl->local_session->get_selectionend() * - edl->session->frame_rate); } else { asset.video_data = 0; asset.layers = 0; - asset.tcstart = 0; - asset.tcend = 0; } if(asset.audio_data && @@ -429,19 +422,11 @@ int Render::check_asset(EDL *edl, Asset &asset) { asset.audio_data = 1; asset.channels = edl->session->audio_channels; - asset.tcstart = (int64_t) (edl->session->get_frame_offset() + - edl->local_session->get_selectionstart() * - edl->session->sample_rate); - asset.tcend = (int64_t) (edl->session->get_frame_offset() + - edl->local_session->get_selectionend() * - edl->session->sample_rate); } else { asset.audio_data = 0; asset.channels = 0; - asset.tcstart = 0; - asset.tcend = 0; } if(!asset.audio_data && @@ -510,7 +495,7 @@ void Render::stop_progress() sprintf(string2, _("Rendering took %s"), string); mwindow->gui->lock_window(""); - mwindow->gui->show_message(string2); + mwindow->gui->set_default_message(string2); mwindow->gui->stop_hourglass(); mwindow->gui->unlock_window(); } @@ -524,6 +509,7 @@ void Render::start_render() in_progress = 0; elapsed_time = 0.0; result = 0; + completion->reset(); thread->start(); } @@ -1006,7 +992,6 @@ if(debug) printf("Render::render %d\n", __LINE__); render->packages = 0; render->in_progress = 0; - render->completion->unlock(); if(debug) printf("Render::render %d\n", __LINE__); } @@ -1091,6 +1076,7 @@ void RenderThread::run() mwindow->batch_render->update_done(-1, 0, 0); } } + render->completion->unlock(); } @@ -1103,10 +1089,8 @@ RenderWindow::RenderWindow(MWindow *mwindow, Asset *asset, int x, int y) - : BC_Window(_(PROGRAM_NAME ": Render"), - x - WIDTH / 2, y - HEIGHT / 2, - WIDTH, HEIGHT, WIDTH, HEIGHT, - 0, 0, 1) + : BC_Window(_(PROGRAM_NAME ": Render"), x, y, + WIDTH, HEIGHT, WIDTH, HEIGHT, 0, 0, 1) { this->mwindow = mwindow; this->render = render;