X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fvdevicex11.C;h=9a67d238bf27337fda067745bd03d95f17605548;hp=24d1be0268fb34fd6937afa1db11f4c756df2429;hb=HEAD;hpb=9fed7535470aa37781733db836068da3b4c17a0d diff --git a/cinelerra-5.1/cinelerra/vdevicex11.C b/cinelerra-5.1/cinelerra/vdevicex11.C index 24d1be02..9a67d238 100644 --- a/cinelerra-5.1/cinelerra/vdevicex11.C +++ b/cinelerra-5.1/cinelerra/vdevicex11.C @@ -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); }