sdl2: stop flickering
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 12 Jun 2015 10:16:02 +0000 (12:16 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 8 Oct 2015 08:31:35 +0000 (10:31 +0200)
Optimizing updates by copying the dirty rectangle
only do not work because of double-buffering.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
ui/sdl2-2d.c

index d0b340f956392bed969a7a1c7e5722e905a4fdf4..191ee3b52de5d29765986ac78801eec0c1ce943b 100644 (file)
@@ -45,10 +45,23 @@ void sdl2_2d_update(DisplayChangeListener *dcl,
         return;
     }
 
+    /*
+     * SDL2 seems to do some double-buffering, and trying to only
+     * update the changed areas results in only one of the two buffers
+     * being updated.  Which flickers alot.  So lets not try to be
+     * clever do a full update every time ...
+     */
+#if 0
     rect.x = x;
     rect.y = y;
     rect.w = w;
     rect.h = h;
+#else
+    rect.x = 0;
+    rect.y = 0;
+    rect.w = surface_width(surf);
+    rect.h = surface_height(surf);
+#endif
 
     SDL_UpdateTexture(scon->texture, NULL, surface_data(surf),
                       surface_stride(surf));