SDL scaling uses a broken version of SDL_rotozoom
which does out-of-bounds memory access.

Disable it for QEMU 1.1 until a better solution is found.

Cc: Anthony Liguori <aligu...@us.ibm.com>
Signed-off-by: Stefan Weil <s...@weilnetz.de>
---
 qemu-doc.texi |    4 ++--
 ui/sdl.c      |   12 ++++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/qemu-doc.texi b/qemu-doc.texi
index 9e07ba6..a72289f 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -290,11 +290,11 @@ Toggle full screen
 
 @item Ctrl-Alt-+
 @kindex Ctrl-Alt-+
-Enlarge the screen
+Enlarge the screen. This function is currently disabled.
 
 @item Ctrl-Alt--
 @kindex Ctrl-Alt--
-Shrink the screen
+Shrink the screen. This function is currently disabled.
 
 @item Ctrl-Alt-u
 @kindex Ctrl-Alt-u
diff --git a/ui/sdl.c b/ui/sdl.c
index f6f711c..8700b7a 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -34,6 +34,13 @@
 #include "x_keymap.h"
 #include "sdl_zoom.h"
 
+#if 0
+/* Scaling with SDL is broken, therefore it is disabled by default.
+ * It can be enabled by defining the following macro.
+ */
+# define CONFIG_SDL_SCALING
+#endif
+
 static DisplayChangeListener *dcl;
 static SDL_Surface *real_screen;
 static SDL_Surface *guest_screen = NULL;
@@ -638,6 +645,7 @@ static void handle_keydown(DisplayState *ds, SDL_Event *ev)
             break;
         case 0x1b: /* '+' */
         case 0x35: /* '-' */
+#if defined(CONFIG_SDL_SCALING)
             if (!gui_fullscreen) {
                 int width = MAX(real_screen->w + (keycode == 0x1b ? 50 : -50),
                                 160);
@@ -648,6 +656,8 @@ static void handle_keydown(DisplayState *ds, SDL_Event *ev)
                 vga_hw_update();
                 gui_keysym = 1;
             }
+#endif /* CONFIG_SDL_SCALING */
+            break;
         default:
             break;
         }
@@ -889,9 +899,11 @@ static void sdl_refresh(DisplayState *ds)
             handle_activation(ds, ev);
             break;
         case SDL_VIDEORESIZE:
+#if defined(CONFIG_SDL_SCALING)
             sdl_scale(ds, ev->resize.w, ev->resize.h);
             vga_hw_invalidate();
             vga_hw_update();
+#endif
             break;
         default:
             break;
-- 
1.7.9


Reply via email to