Patchwork set $SDL_VIDEODRIVER=x11 on Linux to prevent sudo kvm from fighting for video card

login
register
mail settings
Submitter Michael Tokarev
Date May 12, 2011, 2:21 p.m.
Message ID <4DCBECCF.7010305@msgid.tls.msk.ru>
Download mbox | patch
Permalink /patch/95320/
State New
Headers show

Comments

Michael Tokarev - May 12, 2011, 2:21 p.m.
This is a resend of email sent 08.05.2011 01:18.

On Linux, SDL may use fbcon|directfb|svgalib when run without
accessible $DISPLAY to open X11 window.  This is often the case
when qemu is run using sudo.  But in this case, and when actually
run in X11 environment, SDL fights with X11 for the video card,
making current display unavailable, often until reboot.
So make x11 the default SDL video driver if this variable is unset.
This is a bit hackish but saves us from bigger problem.
Maybe it's a good idea to fix this in SDL instead.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Acked-by: Alexander Graf <agraf@suse.de>
---
 ui/sdl.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

Patch

diff --git a/ui/sdl.c b/ui/sdl.c
index dc5c3a1..14a62d9 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -831,6 +831,18 @@  void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
     if (!full_screen) {
         setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 0);
     }
+#ifdef __linux__
+    /* on Linux, SDL may use fbcon|directfb|svgalib when run without
+     * accessible $DISPLAY to open X11 window.  This is often the case
+     * when qemu is run using sudo.  But in this case, and when actually
+     * run in X11 environment, SDL fights with X11 for the video card,
+     * making current display unavailable, often until reboot.
+     * So make x11 the default SDL video driver if this variable is unset.
+     * This is a bit hackish but saves us from bigger problem.
+     * Maybe it's a good idea to fix this in SDL instead.
+     */
+    setenv("SDL_VIDEODRIVER", "x11", 0);
+#endif
      /* Enable normal up/down events for Caps-Lock and Num-Lock keys.
      * This requires SDL >= 1.2.14. */
-- 
1.7.2.5