RafaMar + programmer friend Help button in Batch Render addition
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / vdevicex11.C
index 24d1be0268fb34fd6937afa1db11f4c756df2429..9a67d238bf27337fda067745bd03d95f17605548 100644 (file)
@@ -52,6 +52,7 @@ VDeviceX11::VDeviceX11(VideoDevice *device, Canvas *output)
 {
        reset_parameters();
        this->output = output;
+       opened = 0;
 }
 
 VDeviceX11::~VDeviceX11()
@@ -91,7 +92,7 @@ int VDeviceX11::open_input()
        capture_bitmap->bars_on(SCREENCAP_PIXELS, SCREENCAP_COLOR,
                device->input_x, device->input_y,
                device->in_config->w, device->in_config->h);
-
+       opened = 1;
        return 0;
 }
 
@@ -106,6 +107,7 @@ int VDeviceX11::open_output()
                else
                        output->start_single();
        }
+       opened = 1;
        output->unlock_canvas();
        return 0;
 }
@@ -126,6 +128,7 @@ int VDeviceX11::output_visible()
 
 int VDeviceX11::close_all()
 {
+       if( !opened ) return 1;
        if( output ) {
                BC_WindowBase *window =
                        output->lock_canvas("VDeviceX11::close_all");
@@ -146,12 +149,12 @@ int VDeviceX11::close_all()
        delete bitmap;          bitmap = 0;
        delete output_frame;    output_frame = 0;
        delete capture_bitmap;  capture_bitmap = 0;
+       opened = 0;
 
        if( output )
                output->unlock_canvas();
 
        reset_parameters();
-
        return 0;
 }
 
@@ -283,35 +286,8 @@ void VDeviceX11::new_output_buffer(VFrame **result, int file_colormodel, EDL *ed
                                delete bitmap;        bitmap = 0;
                                delete output_frame;  output_frame = 0;
 // Clear borders if size changed
-                               if( size_change ) {
-//printf("VDeviceX11::new_output_buffer %d w=%d h=%d "
-// "canvas_x1=%d canvas_y1=%d canvas_x2=%d canvas_y2=%d\n",
-// __LINE__, // (int)output->w, (int)output->h,
-// (int)canvas_x1, (int)canvas_y1, (int)canvas_x2, (int)canvas_y2);
-                                       window->set_color(BLACK);
-
-                                       if( canvas_y1 > 0 ) {
-                                               window->draw_box(0, 0, output->w, canvas_y1);
-                                               window->flash(0, 0, output->w, canvas_y1);
-                                       }
-
-                                       if( canvas_y2 < output->h ) {
-                                               window->draw_box(0, canvas_y2, output->w, output->h - canvas_y2);
-                                               window->flash(0, canvas_y2, output->w, output->h - canvas_y2);
-                                       }
-
-                                       if( canvas_x1 > 0 ) {
-                                               window->draw_box(0, canvas_y1, canvas_x1, canvas_y2 - canvas_y1);
-                                               window->flash(0, canvas_y1, canvas_x1, canvas_y2 - canvas_y1);
-                                       }
-
-                                       if( canvas_x2 < output->w ) {
-                                               window->draw_box(canvas_x2, canvas_y1,
-                                                       output->w - canvas_x2, canvas_y2 - canvas_y1);
-                                               window->flash(canvas_x2, canvas_y1,
-                                                       output->w - canvas_x2, canvas_y2 - canvas_y1);
-                                       }
-                               }
+                               if( size_change )
+                                       output->clear_borders(edl);
                        }
                }
 
@@ -546,6 +522,7 @@ int VDeviceX11::write_buffer(VFrame *output_channels, EDL *edl)
 void VDeviceX11::clear_output()
 {
        is_cleared = 1;
+// clear front and back buffers
        output->mwindow->playback_3d->clear_output(output, 0);
        output->mwindow->playback_3d->clear_output(output, output_frame);
 }