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 7, 2011, 9:18 p.m.
Message ID <20110507212002.7708913393@gandalf.tls.msk.ru>
Download mbox | patch
Permalink /patch/94514/
State New
Headers show

Comments

Michael Tokarev - May 7, 2011, 9:18 p.m.
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 ui/sdl.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
Alexander Graf - May 7, 2011, 9:23 p.m.
On 07.05.2011, at 23:18, Michael Tokarev wrote:

> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

This has been haunting users ever since I know of qemu. Thanks a lot for writing up the patch!

Acked-by: Alexander Graf <agraf@suse.de>


Alex
Aurelien Jarno - May 14, 2011, 11:05 p.m.
On Sun, May 08, 2011 at 01:18:30AM +0400, Michael Tokarev wrote:
> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
> ---
>  ui/sdl.c |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)

Thanks, applied.

> 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
> 
> 
>

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. */