awindowgui / mwindowedit / label rework
[goodguy/history.git] / cinelerra-5.1 / cinelerra / render.C
index a1160a6463633600b88bc6cb2e5a7b9a03255ce2..cf0881080ac73bd7f55606ce22534f3bf9ca4573 100644 (file)
@@ -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<BatchRenderJob*> *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<BatchRenderJob*> *jobs,
@@ -330,20 +330,16 @@ 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();
        }
 
@@ -413,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 &&
@@ -434,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 &&
@@ -515,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();
        }
@@ -529,6 +509,7 @@ void Render::start_render()
        in_progress = 0;
        elapsed_time = 0.0;
        result = 0;
+       completion->reset();
        thread->start();
 }
 
@@ -1011,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__);
 }
 
@@ -1096,6 +1076,7 @@ void RenderThread::run()
                        mwindow->batch_render->update_done(-1, 0, 0);
                }
        }
+       render->completion->unlock();
 }
 
 
@@ -1108,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;