vicon jittering, opengl no draw_refresh if no ovly for last frame
[goodguy/history.git] / cinelerra-5.1 / cinelerra / vdevicex11.C
index c0ca4b08357df010a1d85b04532b38ede2ece028..fc9e84097a0bc2c44f9e99c3510fb755746a1dbc 100644 (file)
@@ -161,12 +161,20 @@ int VDeviceX11::close_all()
        if( output ) {
                output->lock_canvas("VDeviceX11::close_all 1");
                output->get_canvas()->lock_window("VDeviceX11::close_all 1");
+// Update the status bug
+               if( !device->single_frame ) {
+                       output->stop_video();
+               }
+               else {
+                       output->stop_single();
+               }
        }
 
        if( output && output_frame ) {
                output->update_refresh(device, output_frame);
-               if( device->single_frame )
-                       output->draw_refresh();
+// if the last frame is good, don't draw over it
+               if( output->need_overlays() )
+                       output->draw_refresh(1);
        }
 
        delete bitmap;          bitmap = 0;
@@ -174,14 +182,6 @@ int VDeviceX11::close_all()
        delete capture_bitmap;  capture_bitmap = 0;
 
        if( output ) {
-// Update the status bug
-               if( !device->single_frame ) {
-                       output->stop_video();
-               }
-               else {
-                       output->stop_single();
-               }
-
                output->get_canvas()->unlock_window();
                output->unlock_canvas();
        }
@@ -236,11 +236,11 @@ int VDeviceX11::get_display_colormodel(int file_colormodel)
 
        if( device->out_config->driver == PLAYBACK_X11_GL ) {
                if( file_colormodel == BC_RGB888 ||
-                       file_colormodel == BC_RGBA8888 ||
-                       file_colormodel == BC_YUV888 ||
-                       file_colormodel == BC_YUVA8888 ||
-                       file_colormodel == BC_RGB_FLOAT ||
-                       file_colormodel == BC_RGBA_FLOAT ) {
+                   file_colormodel == BC_RGBA8888 ||
+                   file_colormodel == BC_YUV888 ||
+                   file_colormodel == BC_YUVA8888 ||
+                   file_colormodel == BC_RGB_FLOAT ||
+                   file_colormodel == BC_RGBA_FLOAT ) {
                        return file_colormodel;
                }
                
@@ -257,13 +257,6 @@ int VDeviceX11::get_display_colormodel(int file_colormodel)
                }
        }
 
-// 2 more colormodels are supported by OpenGL
-       if( device->out_config->driver == PLAYBACK_X11_GL ) {
-               if( file_colormodel == BC_RGB_FLOAT ||
-                   file_colormodel == BC_RGBA_FLOAT )
-                       result = file_colormodel;
-       }
-
        if( result < 0 ) {
                switch( file_colormodel ) {
                case BC_RGB888: