diff -u qemu.orig/Makefile.target qemu/Makefile.target --- qemu.orig/Makefile.target Mon May 30 19:42:28 2005 +++ qemu/Makefile.target Mon May 30 19:57:26 2005 @@ -357,6 +357,10 @@ ifdef CONFIG_SDL VL_OBJS+=sdl.o endif +ifdef CONFIG_GTK +VL_OBJS+=gtk2.o +VL_OBJS+=fullscreen.o +endif ifdef CONFIG_COCOA VL_OBJS+=cocoa.o COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa @@ -392,13 +396,19 @@ endif $(QEMU_SYSTEM): $(VL_OBJS) libqemu.a - $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) + $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(GTK_LIBS) $(FS_LIBS) $(VL_LIBS) cocoa.o: cocoa.m $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< sdl.o: sdl.c keymaps.c sdl_keysym.h $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< + +gtk2.o: gtk2.c keymaps.c gdk_keysym.h fullscreen.h + $(CC) $(CFLAGS) $(DEFINES) $(GTK_CFLAGS) -c -o $@ $< + +fullscreen.o: $(FSDRV) fullscreen.h + $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< sdlaudio.o: sdlaudio.c $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< diff -u qemu.orig/configure qemu/configure --- qemu.orig/configure Mon May 30 19:40:14 2005 +++ qemu/configure Mon May 30 20:10:11 2005 @@ -15,6 +15,7 @@ TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}" TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S" +TMPF="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}-conf" # default parameters prefix="" @@ -171,6 +172,10 @@ ;; --disable-sdl) sdl="no" ;; + --enable-gtk) gtk="yes" + ;; + --set-fs-driver=*) fsdrv=`echo $opt | cut -d '=' -f 2` + ;; --enable-fmod) fmod="yes" ;; --fmod-lib=*) fmod_lib=${opt#--fmod-lib=} @@ -311,6 +316,62 @@ fi # cross compilation fi # -z $sdl +########################################## +# GTK probe + +gtk_too_old=no + +if test -z "$gtk" ; then + +gtk=no + +# normal GTK probe +cat > $TMPC << EOF +#include +#include +int main(int argc, char **argv) { gtk_init(&argc, &argv); return EXIT_SUCCESS; } +EOF + +if $cc -o $TMPE `pkg-config --cflags --libs gtk+-2.0 2> /dev/null` $TMPC 2> /dev/null ; then +_gtkversion=`pkg-config --modversion gtk+-2.0 | sed 's/[^0-9]//g'` +if test "$_sdlversion" -lt 240 ; then + gtk_too_old=yes +else + gtk=yes + +fi + +fi # gtk compile test + +fi # -z $gtk + +if [ "$gtk" = "yes" ]; then + +if [ "$fsdrv" = "" ] ; then + +if [ "$bsd" = "yes" -o "$linux" = "yes" ]; then + fsdrv=xvid_fs.c +else + fsdrv=null_fs.c +fi + +fi # fsdrv test + +if [ "$fsdrv" = "xvid_fs.c" -o "$fsdrv" = "null_fs.c" ]; then + echo "fsdrv=$fsdrv" >> $TMPF +else + echo "Warning: unknown gtk fullscreen driver: $fsdrv - using null driver" + echo 'fsdrv=null_fs.c' >> $TMPF + fsdrv=null_fs.c +fi + +if [ "$fsdrv" = "xvid_fs.c" ]; then + FS_LIBS="-lX11 -lXxf86vm -lXext -L/usr/X11R6/lib" + echo 'FS_LIBS="-lX11 -lXxf86vm -lXext -L/usr/X11R6/lib"' >> $TMPF +fi + +fi # gtk=yes test + if test x"$1" = x"-h" -o x"$1" = x"--help" ; then cat << EOF @@ -434,6 +495,8 @@ if test "$sdl" != "no" ; then echo "SDL static link $sdl_static" fi +echo "GTK support $gtk" +echo "GTK FS driver $fsdrv" echo "mingw32 support $mingw32" echo "Adlib support $adlib" echo -n "FMOD support $fmod" @@ -643,6 +706,8 @@ interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"` echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h +. $TMPF + if test "$target_cpu" = "i386" ; then echo "TARGET_ARCH=i386" >> $config_mak echo "#define TARGET_ARCH \"i386\"" >> $config_h @@ -720,6 +785,17 @@ fi fi +if test "$gtk" = "yes" ; then + . $TMPF + echo "#define CONFIG_GTK 1" >> $config_h + echo "CONFIG_GTK=yes" >> $config_mak + echo "GTK_LIBS=`pkg-config --libs gtk+-2.0`" >> $config_mak + echo "GTK_CFLAGS=`pkg-config --cflags gtk+-2.0`" >> $config_mak + echo "FSDRV=$fsdrv" >> $config_mak + echo "FS_LIBS=$FS_LIBS" >> $config_mak + echo "" >> $config_mak +fi + if test "$cocoa" = "yes" ; then echo "#define CONFIG_COCOA 1" >> $config_h echo "CONFIG_COCOA=yes" >> $config_mak @@ -739,4 +815,4 @@ done fi -rm -f $TMPO $TMPC $TMPE $TMPS +rm -f $TMPO $TMPC $TMPE $TMPS $TMPF diff -u qemu.orig/vl.c qemu/vl.c --- qemu.orig/vl.c Mon May 30 19:40:44 2005 +++ qemu/vl.c Sat May 28 16:17:30 2005 @@ -149,6 +149,7 @@ TextConsole *vga_console; CharDriverState *serial_hds[MAX_SERIAL_PORTS]; CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; +int use_gtk = 0; #ifdef TARGET_I386 int win2k_install_hack = 0; #endif @@ -2881,6 +2882,7 @@ QEMU_OPTION_std_vga, QEMU_OPTION_no_sdl_grab, QEMU_OPTION_funny_hack, + QEMU_OPTION_use_gtk, QEMU_OPTION_monitor, QEMU_OPTION_serial, QEMU_OPTION_parallel, @@ -2953,6 +2955,7 @@ { "std-vga", 0, QEMU_OPTION_std_vga }, { "no-sdl-grab", 0, QEMU_OPTION_no_sdl_grab }, { "funny_hack", 0, QEMU_OPTION_funny_hack }, + { "use-gtk", 0, QEMU_OPTION_use_gtk }, { "monitor", 1, QEMU_OPTION_monitor }, { "serial", 1, QEMU_OPTION_serial }, { "parallel", 1, QEMU_OPTION_parallel }, @@ -3357,6 +3360,9 @@ case QEMU_OPTION_funny_hack: funny_hack = 1; break; + case QEMU_OPTION_use_gtk: + use_gtk = 1; + break; case QEMU_OPTION_g: { const char *p; @@ -3611,7 +3617,17 @@ if (nographic) { dumb_display_init(ds); } else { +#if defined(CONFIG_GTK) #if defined(CONFIG_SDL) + /* so we can choose */ + if (use_gtk) + gtk2_display_init(ds, full_screen); + else + sdl_display_init(ds, full_screen); +#else + gtk2_display_init(ds, full_screen); +#endif +#elif defined(CONFIG_SDL) sdl_display_init(ds, full_screen); #elif defined(CONFIG_COCOA) cocoa_display_init(ds, full_screen); diff -u qemu.orig/vl.h qemu/vl.h --- qemu.orig/vl.h Mon May 30 19:40:14 2005 +++ qemu/vl.h Sat May 28 16:16:18 2005 @@ -579,6 +579,9 @@ /* sdl.c */ void sdl_display_init(DisplayState *ds, int full_screen); +/* gtk2.c */ +void gtk2_display_init(DisplayState *ds, int full_screen); + /* cocoa.m */ void cocoa_display_init(DisplayState *ds, int full_screen);