aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure43
-rw-r--r--include/ui/sdl2.h3
-rw-r--r--ui/sdl2.c18
3 files changed, 58 insertions, 6 deletions
diff --git a/configure b/configure
index 7f1426ed0c..9bdcedc87a 100755
--- a/configure
+++ b/configure
@@ -346,6 +346,7 @@ fdt=""
netmap="no"
sdl=""
sdlabi=""
+sdl_image=""
virtfs=""
mpath=""
vnc="yes"
@@ -1042,6 +1043,10 @@ for opt do
;;
--with-sdlabi=*) sdlabi="$optarg"
;;
+ --disable-sdl-image) sdl_image="no"
+ ;;
+ --enable-sdl-image) sdl_image="yes"
+ ;;
--disable-qom-cast-debug) qom_cast_debug="no"
;;
--enable-qom-cast-debug) qom_cast_debug="yes"
@@ -1704,6 +1709,7 @@ disabled with --disable-FEATURE, default is enabled if available:
gcrypt libgcrypt cryptography support
sdl SDL UI
--with-sdlabi select preferred SDL ABI 1.2 or 2.0
+ sdl_image SDL Image support for icons
gtk gtk UI
vte vte support for the gtk UI
curses curses UI
@@ -3002,11 +3008,44 @@ EOF
fi # sdl compile test
}
+sdl_image_probe ()
+{
+ if test "$sdl_image" != "no" ; then
+ if $pkg_config SDL2_image --exists; then
+ if test "$static" = "yes"; then
+ sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null)
+ else
+ sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null)
+ fi
+ sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null)
+ sdl_image=yes
+
+ sdl_cflags="$sdl_cflags $sdl_image_cflags"
+ sdl_libs="$sdl_libs $sdl_image_libs"
+ else
+ if test "$sdl_image" = "yes" ; then
+ feature_not_found "sdl_image" "Install SDL Image devel"
+ else
+ sdl_image=no
+ fi
+ fi
+ fi
+}
+
if test "$sdl" != "no" ; then
sdl_probe
fi
if test "$sdl" = "yes" ; then
+ sdl_image_probe
+else
+ if test "$sdl_image" = "yes"; then
+ echo "warning: SDL Image requested, but SDL is not available, disabling"
+ fi
+ sdl_image=no
+fi
+
+if test "$sdl" = "yes" ; then
cat > $TMPC <<EOF
#include <SDL.h>
#if defined(SDL_VIDEO_DRIVER_X11)
@@ -6029,6 +6068,7 @@ if test "$darwin" = "yes" ; then
echo "Cocoa support $cocoa"
fi
echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
+echo "SDL image support $sdl_image"
echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
echo "GTK GL support $gtk_gl"
echo "VTE support $vte $(echo_version $vte $vteversion)"
@@ -6368,6 +6408,9 @@ if test "$sdl" = "yes" ; then
echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
+ if test "$sdl_image" = "yes" ; then
+ echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
+ fi
fi
if test "$cocoa" = "yes" ; then
echo "CONFIG_COCOA=y" >> $config_host_mak
diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h
index f43eecdbd6..f6db642b65 100644
--- a/include/ui/sdl2.h
+++ b/include/ui/sdl2.h
@@ -6,6 +6,9 @@
#include <SDL.h>
#include <SDL_syswm.h>
+#ifdef CONFIG_SDL_IMAGE
+# include <SDL_image.h>
+#endif
#ifdef CONFIG_OPENGL
# include "ui/egl-helpers.h"
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 4c0d5db473..cde7feba91 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -764,6 +764,7 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o)
uint8_t data = 0;
int i;
SDL_SysWMinfo info;
+ SDL_Surface *icon = NULL;
assert(o->type == DISPLAY_TYPE_SDL);
@@ -835,13 +836,18 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o)
#endif
}
+#ifdef CONFIG_SDL_IMAGE
+ icon = IMG_Load(CONFIG_QEMU_ICONDIR "/hicolor/128x128/apps/qemu.png");
+#else
/* Load a 32x32x4 image. White pixels are transparent. */
- SDL_Surface *image = SDL_LoadBMP(CONFIG_QEMU_ICONDIR
- "/hicolor/32x32/apps/qemu.bmp");
- if (image) {
- uint32_t colorkey = SDL_MapRGB(image->format, 255, 255, 255);
- SDL_SetColorKey(image, SDL_TRUE, colorkey);
- SDL_SetWindowIcon(sdl2_console[0].real_window, image);
+ icon = SDL_LoadBMP(CONFIG_QEMU_ICONDIR "/hicolor/32x32/apps/qemu.bmp");
+ if (icon) {
+ uint32_t colorkey = SDL_MapRGB(icon->format, 255, 255, 255);
+ SDL_SetColorKey(icon, SDL_TRUE, colorkey);
+ }
+#endif
+ if (icon) {
+ SDL_SetWindowIcon(sdl2_console[0].real_window, icon);
}
gui_grab = 0;