Index: Makefile =================================================================== RCS file: /cvsroot/qemu/qemu/Makefile,v retrieving revision 1.87 diff -u -r1.87 Makefile --- Makefile 28 Apr 2005 21:15:08 -0000 1.87 +++ Makefile 27 May 2005 10:48:38 -0000 @@ -25,8 +25,13 @@ endif endif +ifdef CONFIG_GTK +qemu-img$(EXESUF): qemu-img.c block.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c gtk-qemu-img/src/callbacks.c gtk-qemu-img/src/interface.c gtk-qemu-img/src/support.c + $(CC) -DQEMU_TOOL $(CFLAGS) $(LDFLAGS) $(DEFINES) -o $@ $^ -lz $(LIBS) +else qemu-img$(EXESUF): qemu-img.c block.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c $(CC) -DQEMU_TOOL $(CFLAGS) $(LDFLAGS) $(DEFINES) -o $@ $^ -lz $(LIBS) +endif dyngen$(EXESUF): dyngen.c $(HOST_CC) $(CFLAGS) $(DEFINES) -o $@ $^ Index: Makefile.target =================================================================== RCS file: /cvsroot/qemu/qemu/Makefile.target,v retrieving revision 1.69 diff -u -r1.69 Makefile.target --- Makefile.target 28 Apr 2005 21:15:08 -0000 1.69 +++ Makefile.target 27 May 2005 10:48:39 -0000 @@ -14,7 +14,7 @@ VPATH+=:$(SRC_PATH)/linux-user DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH) endif -CFLAGS=-Wall -O2 -g -fno-strict-aliasing +CFLAGS=-Wall -O2 -g -fno-strict-aliasing $(GTK_CFLAGS) #CFLAGS+=-Werror LDFLAGS=-g LIBS= @@ -357,6 +357,9 @@ ifdef CONFIG_SDL VL_OBJS+=sdl.o endif +ifdef CONFIG_GTK +VL_OBJS+=gtk.o +endif ifdef CONFIG_COCOA VL_OBJS+=cocoa.o COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa @@ -392,13 +395,16 @@ 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) $(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 $@ $< + $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) $(GTK_CFLAGS) -c -o $@ $< + +gtk.o : gtk.c + $(CC) $(CFLAGS) $(DEFINES) $(GTK_CFLAGS) -c -o $@ $< sdlaudio.o: sdlaudio.c $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< Index: configure =================================================================== RCS file: /cvsroot/qemu/qemu/configure,v retrieving revision 1.66 diff -u -r1.66 configure --- configure 28 Apr 2005 20:41:53 -0000 1.66 +++ configure 27 May 2005 10:48:39 -0000 @@ -168,6 +168,8 @@ ;; --disable-sdl) sdl="no" ;; + --enable-gtk) gtk="yes" ; sdl="no" ; sdl_static="no" + ;; --enable-fmod) fmod="yes" ;; --fmod-lib=*) fmod_lib=${opt#--fmod-lib=} @@ -306,6 +308,34 @@ 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 test x"$1" = x"-h" -o x"$1" = x"--help" ; then cat << EOF @@ -422,6 +452,7 @@ if test "$sdl" != "no" ; then echo "SDL static link $sdl_static" fi +echo "GTK support $gtk" echo "mingw32 support $mingw32" echo "Adlib support $adlib" echo -n "FMOD support $fmod" @@ -704,6 +735,14 @@ fi fi +if test "$gtk" = "yes" ; then + 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 "" >> $config_mak +fi + if test "$cocoa" = "yes" ; then echo "#define CONFIG_COCOA 1" >> $config_h echo "CONFIG_COCOA=yes" >> $config_mak Index: qemu-img.c =================================================================== RCS file: /cvsroot/qemu/qemu/qemu-img.c,v retrieving revision 1.7 diff -u -r1.7 qemu-img.c --- qemu-img.c 28 Apr 2005 21:15:08 -0000 1.7 +++ qemu-img.c 27 May 2005 10:48:39 -0000 @@ -21,6 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#ifdef CONFIG_GTK +#include +#include "interface.h" +#include "support.h" +#endif + #include "vl.h" void *get_mmap_addr(unsigned long size) @@ -675,6 +681,7 @@ return 0; } +#ifndef CONFIG_GTK int main(int argc, char **argv) { const char *cmd; @@ -697,3 +704,21 @@ } return 0; } +#else +int main(int argc, char **argv) +{ + GtkWidget *qimg; + + bdrv_init(); + + gtk_set_locale (); + gtk_init (&argc, &argv); + + qimg = create_qimg (); + gtk_widget_show (qimg); + + gtk_main (); + + return 0; +} +#endif Index: vl.c =================================================================== RCS file: /cvsroot/qemu/qemu/vl.c,v retrieving revision 1.127 diff -u -r1.127 vl.c --- vl.c 30 Apr 2005 16:10:35 -0000 1.127 +++ vl.c 27 May 2005 10:48:44 -0000 @@ -23,6 +23,8 @@ */ #include "vl.h" +#include + #include #include #include @@ -2679,7 +2681,6 @@ } } #endif - if (vm_running) { qemu_run_timers(&active_timers[QEMU_TIMER_VIRTUAL], qemu_get_clock(vm_clock)); @@ -2721,6 +2722,11 @@ } else { timeout = 10; } + + if (gtk_events_pending ()) { + gtk_main_iteration_do (FALSE); + } + main_loop_wait(timeout); } cpu_disable_ticks(); @@ -3597,6 +3603,8 @@ } else { #if defined(CONFIG_SDL) sdl_display_init(ds, full_screen); +#elif defined(CONFIG_GTK) + gtk_display_init(ds, full_screen); #elif defined(CONFIG_COCOA) cocoa_display_init(ds, full_screen); #else Index: vl.h =================================================================== RCS file: /cvsroot/qemu/qemu/vl.h,v retrieving revision 1.74 diff -u -r1.74 vl.h --- vl.h 30 Apr 2005 16:10:35 -0000 1.74 +++ vl.h 27 May 2005 10:48:44 -0000 @@ -577,6 +577,9 @@ /* sdl.c */ void sdl_display_init(DisplayState *ds, int full_screen); +/* gtk.c */ +void gtk_display_init(DisplayState *ds, int full_screen); + /* cocoa.m */ void cocoa_display_init(DisplayState *ds, int full_screen); Index: hw/vga.c =================================================================== RCS file: /cvsroot/qemu/qemu/hw/vga.c,v retrieving revision 1.40 diff -u -r1.40 vga.c --- hw/vga.c 23 Apr 2005 18:43:45 -0000 1.40 +++ hw/vga.c 27 May 2005 10:48:44 -0000 @@ -803,7 +803,11 @@ static inline unsigned int rgb_to_pixel32(unsigned int r, unsigned int g, unsigned b) { - return (r << 16) | (g << 8) | b; +#ifdef CONFIG_GTK + return 0xFF000000 | (b << 16) | (g << 8) | r; +#else + return (r << 16) | (g << 8) | b; +#endif } #define DEPTH 8