#include "autos.h"
#include "bccapture.h"
#include "bccmodels.h"
+#include "bcdisplayinfo.h"
#include "bcsignals.h"
#include "canvas.h"
#include "edl.h"
{
reset_parameters();
this->output = output;
+ opened = 0;
}
VDeviceX11::~VDeviceX11()
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;
}
else
output->start_single();
}
+ opened = 1;
output->unlock_canvas();
return 0;
}
int VDeviceX11::close_all()
{
+ if( !opened ) return 1;
if( output ) {
BC_WindowBase *window =
output->lock_canvas("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;
}
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);
}
}
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);
}
bool VDeviceX11::can_mask(int64_t start_position_project, MaskAutos *keyframe_set)
{
+ if( strncmp(BC_DisplayInfo::get_gl_shader_version(), "4.3", 3) < 0 )
+ return 0;
Auto *current = 0;
MaskAuto *keyframe = (MaskAuto*)keyframe_set->
get_prev_auto(start_position_project, PLAY_FORWARD, current);