From c829b8bea289b4ff50b9e2422f8144eafe669ed5 Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Thu, 15 Dec 2011 19:53:20 +0900 Subject: [PATCH] [Title] emulator window bug patch [Type] bugfix [Module] Emulator [Priority] major [CQ#] [Redmine#] [Problem] wrong window resizing [Cause] [Solution] [TestCase] --- tizen/src/emulator.c | 13 ++++++------- tizen/src/event_handler.c | 15 ++++++++++----- tizen/src/menu_callback.c | 20 ++++++++++++++++++-- tizen/src/qemu_gtk_widget.c | 1 + 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/tizen/src/emulator.c b/tizen/src/emulator.c index 5d084a1..f0defd8 100755 --- a/tizen/src/emulator.c +++ b/tizen/src/emulator.c @@ -50,7 +50,7 @@ #include "sensor_server.h" #include #include -#include +#include /* changes for saving emulator state */ #ifdef __MINGW32__ @@ -623,7 +623,7 @@ static void init_startup_option(void) * @return success 0, fail -1 * @date May 18. 2009 * */ - + struct utsname host_uname_buf; static int startup_option_parser(int *argc, char ***argv) { @@ -684,8 +684,8 @@ static int startup_option_parser(int *argc, char ***argv) tm_time = localtime(&(tval.tv_sec)); strftime(timeinfo, sizeof(timeinfo), "%Y/%m/%d %H:%M:%S", tm_time); INFO("=========INFO START========\n"); - INFO("Current time: %s\n", timeinfo); - INFO("SDK version : %s(%s) Build date: %s\n", build_version, build_git, build_date); + INFO("Current time : %s\n", timeinfo); + INFO("SDK version : %s(%s), Build date : %s\n", build_version, build_git, build_date); INFO("Qemu build machine linux kernel version : (%d, %d, %d)\n", LINUX_VERSION_CODE >> 16, (LINUX_VERSION_CODE >> 8) & 0xff , LINUX_VERSION_CODE & 0xff); @@ -693,8 +693,7 @@ static int startup_option_parser(int *argc, char ***argv) INFO("Host uname : %s %s %s %s %s\n", host_uname_buf.sysname, host_uname_buf.nodename, host_uname_buf.release, host_uname_buf.version, host_uname_buf.machine); } - - INFO("Host gtk version : (%d, %d, %d)\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + INFO("Host sdl version : (%d, %d, %d)\n", SDL_Linked_Version()->major, SDL_Linked_Version()->minor, SDL_Linked_Version()->patch); char *virtual_target_path = get_virtual_target_abs_path(startup_option.vtm); @@ -708,7 +707,7 @@ static int startup_option_parser(int *argc, char ***argv) if (!startup_option.vtm) startup_option.vtm = g_strdup_printf("default"); startup_option.disk = g_strdup_printf("%semulimg-%s.%s",virtual_target_path, startup_option.vtm, arch); - INFO("target name :%s, disk path: %s\n", startup_option.vtm, startup_option.disk); + INFO("target name : %s, disk path : %s\n", startup_option.vtm, startup_option.disk); INFO("\n"); while(fgets(string, MAXBUF, fp)!=NULL) diff --git a/tizen/src/event_handler.c b/tizen/src/event_handler.c index b4c5e1d..6c62d32 100755 --- a/tizen/src/event_handler.c +++ b/tizen/src/event_handler.c @@ -66,6 +66,7 @@ #include "utils.h" #include "tools.h" #include "debug_ch.h" +#include //DEFAULT_DEBUG_CHANNEL(tizen); MULTI_DEBUG_CHANNEL(tizen, event_handler); @@ -89,7 +90,7 @@ static int gui_key_modifier_pressed; static int gui_keysym; static kbd_layout_t *kbd_layout = NULL; extern multi_touch_state qemu_mts; - +extern struct utsname host_uname_buf; static uint8_t gtk_keyevent_to_keycode_generic(const GdkEventKey *event) { @@ -370,8 +371,6 @@ static void gtk_process_key(GdkEventKey *event) /* sent when leaving window: reset the modifiers state */ reset_keys(); return; - case 0x2a: /* Left Shift */ - case 0x36: /* Right Shift */ case 0x1d: /* Left CTRL */ if (event->type == GDK_KEY_RELEASE) { qemu_mts.multitouch_enable = 0; @@ -385,8 +384,9 @@ static void gtk_process_key(GdkEventKey *event) } else { qemu_mts.multitouch_enable = 1; } - case 0x9d: /* Right CTRL */ + case 0x2a: /* Left Shift */ + case 0x36: /* Right Shift */ case 0x38: /* Left ALT */ case 0xb8: /* Right ALT */ if (event->type == GDK_KEY_RELEASE) @@ -1056,10 +1056,15 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin */ gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data) { - /* just save new values in configuration structure */ + // Ubuntu 11.10 configure_event bug work-around + if (strcmp(host_uname_buf.release, "3.0.0-12-generic") == 0 && event->x == 0 && event->y == 0) { + return TRUE; + } + /* just save new values in configuration structure */ configuration.main_x = event->x; configuration.main_y = event->y; + INFO("configure_event x=%d, y=%d", event->x, event->y); return TRUE; } diff --git a/tizen/src/menu_callback.c b/tizen/src/menu_callback.c index af0dc9f..730f4aa 100755 --- a/tizen/src/menu_callback.c +++ b/tizen/src/menu_callback.c @@ -39,6 +39,7 @@ //#include "hw/smb380.h" #include "qemu_gtk_widget.h" #include "about_version.h" +#include #ifdef __MINGW32__ #include @@ -56,6 +57,7 @@ MULTI_DEBUG_CHANNEL(tizen, menu_callback); extern GtkWidget *pixmap_widget; extern GtkWidget *fixed; +extern struct utsname host_uname_buf; extern int emul_create_process(const gchar cmd[]); @@ -114,10 +116,23 @@ int mask_main_lcd(GtkWidget *widget, PHONEMODELINFO *pDev, CONFIGURATION *pconfi GdkBitmap *SkinMask = NULL; GdkPixmap *SkinPixmap = NULL; GtkWidget *sdl_widget = NULL; + GdkGeometry hints; gtk_widget_hide_all(widget); - gtk_decorated_window_move_resize_window (GTK_WINDOW(widget), pconfiguration->main_x, pconfiguration->main_y, - pDev->mode_SkinImg[nMode].nImgWidth, pDev->mode_SkinImg[nMode].nImgHeight); + + if (strcmp(host_uname_buf.release, "2.6.35-22-generic") == 0) { // Ubuntu 10.10 resize window bug work-around + gtk_decorated_window_move_resize_window (GTK_WINDOW(widget), + pconfiguration->main_x, pconfiguration->main_y, + pDev->mode_SkinImg[nMode].nImgWidth, pDev->mode_SkinImg[nMode].nImgHeight); + } else { + hints.width_inc = hints.min_width = hints.base_width = pDev->mode_SkinImg[nMode].nImgWidth; + hints.height_inc = hints.min_height = hints.base_height = pDev->mode_SkinImg[nMode].nImgHeight; + gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL, &hints, + GDK_HINT_RESIZE_INC | GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE); + + gtk_window_resize (GTK_WINDOW(widget), + pDev->mode_SkinImg[nMode].nImgWidth, pDev->mode_SkinImg[nMode].nImgHeight); + } /* * to generate the configure, expose_event, when the large image goes @@ -147,6 +162,7 @@ int mask_main_lcd(GtkWidget *widget, PHONEMODELINFO *pDev, CONFIGURATION *pconfi gtk_window_move(GTK_WINDOW(widget), pconfiguration->main_x, pconfiguration->main_y); gtk_window_set_keep_above(GTK_WINDOW (widget), pconfiguration->always_on_top); gtk_widget_show_all(widget); + gtk_widget_queue_resize (widget); return 0; } diff --git a/tizen/src/qemu_gtk_widget.c b/tizen/src/qemu_gtk_widget.c index e9382f6..9e36e22 100755 --- a/tizen/src/qemu_gtk_widget.c +++ b/tizen/src/qemu_gtk_widget.c @@ -569,6 +569,7 @@ static void qemu_sdl_init(qemu_state_t *qemu_state) SDL_SetCursor(sdl_cursor_normal); /* finger point surface init */ + qemu_mts.multitouch_enable = 0; qemu_mts.finger_point_size = DEFAULT_FINGER_POINT_SIZE; temp = qemu_mts.finger_point_size / 2; qemu_mts.finger_point = SDL_CreateRGBSurface(SDL_SRCALPHA | SDL_HWSURFACE, -- 2.7.4