SOURCES: qemu-nosdlgui.patch - updated to 0.7.1

charles charles at pld-linux.org
Tue Aug 23 03:36:45 CEST 2005


Author: charles                      Date: Tue Aug 23 01:36:45 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated to 0.7.1

---- Files affected:
SOURCES:
   qemu-nosdlgui.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/qemu-nosdlgui.patch
diff -u SOURCES/qemu-nosdlgui.patch:1.1 SOURCES/qemu-nosdlgui.patch:1.2
--- SOURCES/qemu-nosdlgui.patch:1.1	Thu Jul  7 02:37:20 2005
+++ SOURCES/qemu-nosdlgui.patch	Tue Aug 23 03:36:40 2005
@@ -10,10 +10,9 @@
  
  cocoa.o: cocoa.m
  	$(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
-diff -Nur qemu-0.7.0.orig/sdl.c qemu-0.7.0.chng/sdl.c
---- qemu-0.7.0.orig/sdl.c	2005-04-27 20:52:05.000000000 +0000
-+++ qemu-0.7.0.chng/sdl.c	2005-07-06 22:28:55.000000000 +0000
-@@ -1,507 +1,614 @@
+--- qemu-0.7.1/sdl.c.orig	2005-07-24 20:52:08.000000000 +0200
++++ qemu-0.7.1/sdl.c	2005-08-23 01:47:48.000000000 +0200
+@@ -1,506 +1,614 @@
  /*
 - * QEMU SDL display driver
 - * 
@@ -25,11 +24,11 @@
 - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 - * copies of the Software, and to permit persons to whom the Software is
 - * furnished to do so, subject to the following conditions:
-+ * Xlib interface for QEMU System Emulator
-  *
+- *
 - * The above copyright notice and this permission notice shall be included in
 - * all copies or substantial portions of the Software.
-- *
++ * Xlib interface for QEMU System Emulator
+  *
 - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
@@ -39,16 +38,18 @@
 - * THE SOFTWARE.
 - */
 -#include "vl.h"
--
--#include <SDL.h>
 + * Copyright (c) 2004 Vladimit Oleynik <dzo at simtreas.ru>
 + * Used ideas from Bochs, SDL, PCEmu.
 +*/
-+
+ 
+-#include <SDL.h>
 +#include <X11/Xlib.h>
 +#include <X11/Xutil.h>
 +#include <X11/keysym.h>
-+
+ 
+-#ifndef _WIN32
+-#include <signal.h>
+-#endif
 +/* hack, special for qemu */
 +#define X_display_init sdl_display_init
 +
@@ -88,10 +89,7 @@
 +  0x24, 0x15, 0x49, 0x49, 0x09,
 +  0xc8, 0x36, 0x32, 0x49, 0x0e,
 +};
- 
--#ifndef _WIN32
--#include <signal.h>
--#endif
++
 +#include "vl.h"
  
 -static SDL_Surface *screen;
@@ -104,27 +102,8 @@
 -static int gui_fullscreen_initial_grab;
 -static int gui_grab_code = KMOD_LALT | KMOD_LCTRL;
 -static uint8_t modifiers_state[256];
--
--static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
--{
--    //    printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
--    SDL_UpdateRect(screen, x, y, w, h);
--}
--
--static void sdl_resize(DisplayState *ds, int w, int h)
--{
--    int flags;
--
--    //    printf("resizing to %d %d\n", w, h);
  
--    flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL;
--    flags |= SDL_RESIZABLE;
--    if (gui_fullscreen)
--        flags |= SDL_FULLSCREEN;
--    screen = SDL_SetVideoMode(w, h, 0, flags);
--    if (!screen) {
--        fprintf(stderr, "Could not open SDL display\n");
--        exit(1);
+-static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
 +static Display *qx_display;
 +static int q_x_screen_num;
 +static Window win;
@@ -135,25 +114,37 @@
 +static int width, height;
 +
 +static void x_update(DisplayState *ds, int x, int y, int w, int h)
-+{
+ {
+-    //    printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
+-    SDL_UpdateRect(screen, x, y, w, h);
 +    XPutImage(qx_display, win, gc, ximage, x, y, x, y, w, h);
 +    XFlush(qx_display);
-+}
-+
+ }
+ 
+-static void sdl_resize(DisplayState *ds, int w, int h)
 +static int prev_x, prev_y;
 +static int current_x, current_y;
 +
 +/* Move the cursor to a center window place */
 +static void qXWarpPointer(void)
-+{
+ {
+-    int flags;
 +	int x = width/2;
 +	int y = height/2;
-+
+ 
+-    //    printf("resizing to %d %d\n", w, h);
 +	prev_x = current_x = x;
 +	prev_y = current_y = y;
 +	XWarpPointer(qx_display, None, win, 0, 0, 0, 0, x, y);
 +}
-+
+ 
+-    flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL;
+-    if (gui_fullscreen)
+-        flags |= SDL_FULLSCREEN;
+-    screen = SDL_SetVideoMode(w, h, 0, flags);
+-    if (!screen) {
+-        fprintf(stderr, "Could not open SDL display\n");
+-        exit(1);
 +static void x_resize(DisplayState *ds, int w, int h)
 +{
 +    XSizeHints hints;
@@ -164,7 +155,12 @@
 +      hints.max_width = hints.min_width = w;
 +      hints.max_height = hints.min_height = h;
 +      XSetWMNormalHints(qx_display, win, &hints);
-+    }
+     }
+-    ds->data = screen->pixels;
+-    ds->linesize = screen->pitch;
+-    ds->depth = screen->format->BitsPerPixel;
+-    ds->width = w;
+-    ds->height = h;
 +    if(ximage) {
 +	XDestroyImage(ximage);
 +//        free(ds->data);
@@ -194,15 +190,19 @@
 +    ximage->data = ds->data;
 +    qXWarpPointer();
 +    XFlush(qx_display);
-+}
-+
+ }
+ 
+-/* generic keyboard conversion */
 +static int gui_grab;
-+
+ 
+-#include "sdl_keysym.h"
+-#include "keymaps.c"
 +static void x_SetCaption(void)
 +{
 +	char *title, *icon;
 +	XTextProperty titleprop, iconprop;
-+
+ 
+-static kbd_layout_t *kbd_layout = NULL;
 +	title = icon = "QEMU";
 +	if (!vm_running && !gui_grab)
 +		title = "QEMU [Stopped]";
@@ -210,7 +210,15 @@
 +		title = "QEMU - Press Ctrl-Shift to exit grab";
 +	if (!vm_running && gui_grab)
 +		title = "QEMU [Stopped] - Press Ctrl-Shift to exit grab";
-+
+ 
+-static uint8_t sdl_keyevent_to_keycode_generic(const SDL_KeyboardEvent *ev)
+-{
+-    int keysym;
+-    /* workaround for X11+SDL bug with AltGR */
+-    keysym = ev->keysym.sym;
+-    if (keysym == 0 && ev->keysym.scancode == 113)
+-        keysym = SDLK_MODE;
+-    return keysym2scancode(kbd_layout, keysym);
 +	XStringListToTextProperty(&title, 1, &titleprop);
 +	XSetWMName(qx_display, win, &titleprop);
 +	XFree(titleprop.value);
@@ -219,8 +227,9 @@
 +	XSetWMIconName(qx_display, win, &iconprop);
 +	XFree(iconprop.value);
 +	XSync(qx_display, /* no discard */ 0);
-+}
-+
+ }
+ 
+-/* specific keyboard conversions from scan codes */
 +static void trigger_mouse_grab(void)
 +{
 +  gui_grab ^= 1;
@@ -228,126 +237,26 @@
 +      /* disable cursor */
 +      static Cursor cursor;
 +      static int cursor_created;
-+
+ 
+-#if defined(_WIN32)
 +#define shape_width 16
 +#define shape_height 16
 +#define mask_width 16
 +#define mask_height 16
-+
+ 
+-static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
+-{
+-    return ev->keysym.scancode;
+-}
 +      static unsigned int shape_bits[(16*16)/32];
 +      static unsigned int mask_bits[(16*16)/32];
-+
+ 
+-#else
 +      if (!cursor_created) {
 +	    Pixmap shape, mask;
 +	    XColor white, black;
 +	    Colormap default_cmap;
-+
-+	    default_cmap = DefaultColormap(qx_display, q_x_screen_num);
-+
-+	    shape = XCreatePixmapFromBitmapData(qx_display,
-+						RootWindow(qx_display,q_x_screen_num),
-+						(char*)shape_bits,
-+						shape_width, shape_height,
-+						1, 0, 1);
-+	    mask =  XCreatePixmapFromBitmapData(qx_display,
-+						RootWindow(qx_display,q_x_screen_num),
-+						(char*)mask_bits,
-+						mask_width, mask_height,
-+						1, 0, 1);
-+	    XParseColor(qx_display, default_cmap, "black", &black);
-+	    XParseColor(qx_display, default_cmap, "white", &white);
-+	    cursor = XCreatePixmapCursor(qx_display, shape, mask,
-+					 &white, &black, 1, 1);
-+	    cursor_created = 1;
-+      }
-+      XDefineCursor(qx_display, win, cursor);
-+
-+      /* grab pointer and keyboard */
-+
-+//    if ( flags & FULLSCREEN ) {
-+//      /* Unbind the mouse from the fullscreen window */
-+//      XUngrabPointer(qx_display, CurrentTime);
-+//    }
-+      /* Try to grab the mouse */
-+      while ( 1 ) {
-+	int result = XGrabPointer(qx_display, win, True, 0,
-+					GrabModeAsync, GrabModeAsync,
-+					win, None, CurrentTime);
-+	if (result == GrabSuccess)
-+		break;
-+      }
-+      /* Now grab the keyboard */
-+      XGrabKeyboard(qx_display, win, True,
-+			GrabModeAsync, GrabModeAsync, CurrentTime);
-+
-+      /* Raise the window if we grab the mouse */
-+//    if ( !(flags & FULLSCREEN) )
-+	XRaiseWindow(qx_display, win);
-+      qXWarpPointer();
-+  } else {
-+    /* enable cursor */
-+    XUndefineCursor(qx_display, win);
-+    /* ungrab pointer and keyboard */
-+    XUngrabPointer(qx_display, CurrentTime);
-+    XUngrabKeyboard(qx_display, CurrentTime);
-+  }
-+  x_SetCaption();
-+}
-+
-+static unsigned mouse_button_state;
-+
-+static void send_keyboard_mouse_status(void)
-+{
-+    int dx, dy;
-+
-+    dx = current_x - prev_x;
-+    dy = -(current_y - prev_y);
-+    kbd_mouse_event(dx, -dy, 0, mouse_button_state);
-+    if(current_x <= 1 || current_x >= (width-1) || current_y <= 1 || current_y >= (height-1)) {
-+	qXWarpPointer();
-+    } else {
-+	prev_x = current_x;
-+	prev_y = current_y;
-     }
--    ds->data = screen->pixels;
--    ds->linesize = screen->pitch;
--    ds->depth = screen->format->BitsPerPixel;
--    ds->width = w;
--    ds->height = h;
- }
  
--/* generic keyboard conversion */
--
--#include "sdl_keysym.h"
--#include "keymaps.c"
--
--static kbd_layout_t *kbd_layout = NULL;
--
--static uint8_t sdl_keyevent_to_keycode_generic(const SDL_KeyboardEvent *ev)
-+static const unsigned char scan_table1[] =
- {
--    int keysym;
--    /* workaround for X11+SDL bug with AltGR */
--    keysym = ev->keysym.sym;
--    if (keysym == 0 && ev->keysym.scancode == 113)
--        keysym = SDLK_MODE;
--    return keysym2scancode(kbd_layout, keysym);
--}
--
--/* specific keyboard conversions from scan codes */
--
--#if defined(_WIN32)
--
--static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
--{
--    return ev->keysym.scancode;
--}
--
-+    0x39, 0x02,
-+#ifdef KBUK             /* double quotes, hash symbol */
-+    0x03, 0x2b,
- #else
--
 -static const uint8_t x_keycode_to_pc_keycode[61] = {
 -   0xc7,      /*  97  Home   */
 -   0xc8,      /*  98  Up     */
@@ -411,13 +320,32 @@
 -   0x52,         /* 156 KP_Ins */
 -   0x53,         /* 157 KP_Del */
 -};
--
++	    default_cmap = DefaultColormap(qx_display, q_x_screen_num);
+ 
 -static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
 -{
 -    int keycode;
--
++	    shape = XCreatePixmapFromBitmapData(qx_display,
++						RootWindow(qx_display,q_x_screen_num),
++						(char*)shape_bits,
++						shape_width, shape_height,
++						1, 0, 1);
++	    mask =  XCreatePixmapFromBitmapData(qx_display,
++						RootWindow(qx_display,q_x_screen_num),
++						(char*)mask_bits,
++						mask_width, mask_height,
++						1, 0, 1);
++	    XParseColor(qx_display, default_cmap, "black", &black);
++	    XParseColor(qx_display, default_cmap, "white", &white);
++	    cursor = XCreatePixmapCursor(qx_display, shape, mask,
++					 &white, &black, 1, 1);
++	    cursor_created = 1;
++      }
++      XDefineCursor(qx_display, win, cursor);
+ 
 -    keycode = ev->keysym.scancode;
--
++      /* grab pointer and keyboard */
+ 
 -    if (keycode < 9) {
 -        keycode = 0;
 -    } else if (keycode < 97) {
@@ -429,8 +357,71 @@
 -        keycode = 0;
 -    }
 -    return keycode;
--}
--
++//    if ( flags & FULLSCREEN ) {
++//      /* Unbind the mouse from the fullscreen window */
++//      XUngrabPointer(qx_display, CurrentTime);
++//    }
++      /* Try to grab the mouse */
++      while ( 1 ) {
++	int result = XGrabPointer(qx_display, win, True, 0,
++					GrabModeAsync, GrabModeAsync,
++					win, None, CurrentTime);
++	if (result == GrabSuccess)
++		break;
++      }
++      /* Now grab the keyboard */
++      XGrabKeyboard(qx_display, win, True,
++			GrabModeAsync, GrabModeAsync, CurrentTime);
++
++      /* Raise the window if we grab the mouse */
++//    if ( !(flags & FULLSCREEN) )
++	XRaiseWindow(qx_display, win);
++      qXWarpPointer();
++  } else {
++    /* enable cursor */
++    XUndefineCursor(qx_display, win);
++    /* ungrab pointer and keyboard */
++    XUngrabPointer(qx_display, CurrentTime);
++    XUngrabKeyboard(qx_display, CurrentTime);
++  }
++  x_SetCaption();
+ }
+ 
+-#endif
++static unsigned mouse_button_state;
+ 
+-static void reset_keys(void)
++static void send_keyboard_mouse_status(void)
+ {
+-    int i;
+-    for(i = 0; i < 256; i++) {
+-        if (modifiers_state[i]) {
+-            if (i & 0x80)
+-                kbd_put_keycode(0xe0);
+-            kbd_put_keycode(i | 0x80);
+-            modifiers_state[i] = 0;
+-        }
++    int dx, dy;
++
++    dx = current_x - prev_x;
++    dy = -(current_y - prev_y);
++    kbd_mouse_event(dx, -dy, 0, mouse_button_state);
++    if(current_x <= 1 || current_x >= (width-1) || current_y <= 1 || current_y >= (height-1)) {
++	qXWarpPointer();
++    } else {
++	prev_x = current_x;
++	prev_y = current_y;
+     }
+ }
+ 
+-static void sdl_process_key(SDL_KeyboardEvent *ev)
++static const unsigned char scan_table1[] =
+ {
+-    int keycode, v;
++    0x39, 0x02,
++#ifdef KBUK             /* double quotes, hash symbol */
++    0x03, 0x2b,
++#else
 +    0x28, 0x04,
 +#endif
 +    0x05, 0x06, 0x08, 0x28,
@@ -460,25 +451,8 @@
 +    0x56,
 +#else
 +    0x2b,
- #endif
++#endif
  
--static void reset_keys(void)
--{
--    int i;
--    for(i = 0; i < 256; i++) {
--        if (modifiers_state[i]) {
--            if (i & 0x80)
--                kbd_put_keycode(0xe0);
--            kbd_put_keycode(i | 0x80);
--            modifiers_state[i] = 0;
--        }
--    }
--}
--
--static void sdl_process_key(SDL_KeyboardEvent *ev)
--{
--    int keycode, v;
--
 -    if (ev->keysym.sym == SDLK_PAUSE) {
 -        /* specific case */
 -        v = 0;
@@ -489,13 +463,20 @@
 -        kbd_put_keycode(0x45 | v);
 -        return;
 -    }
--
++    0x1b,
+ 
 -    if (kbd_layout) {
 -        keycode = sdl_keyevent_to_keycode_generic(ev);
 -    } else {
 -        keycode = sdl_keyevent_to_keycode(ev);
 -    }
--
++#ifdef KBUK             /* tilde */
++    0x2b,
++#else
++    0x29,
++#endif
++};
+ 
 -    switch(keycode) {
 -    case 0x00:
 -        /* sent when leaving window: reset the modifiers state */
@@ -519,7 +500,7 @@
 -        kbd_put_keycode(keycode | 0x80);
 -        return;
 -    }
--
+ 
 -    /* now send the key code */
 -    if (keycode & 0x80)
 -        kbd_put_keycode(0xe0);
@@ -528,7 +509,16 @@
 -    else
 -        kbd_put_keycode(keycode & 0x7f);
 -}
--
++static const struct {
++    KeySym key;
++    unsigned scan_code;
++} scan_table2[] = {
++    { XK_BackSpace,     0x0e },
++    { XK_Tab,           0x0f },
++    { XK_Return,        0x1c },
++    { XK_Escape,        0x01 },
++    { XK_Delete,        0x53e0 },
+ 
 -static void sdl_update_caption(void)
 -{
 -    char buf[1024];
@@ -541,7 +531,17 @@
 -    }
 -    SDL_WM_SetCaption(buf, "QEMU");
 -}
--
++    { XK_Home,          0x47e0 },
++    { XK_Left,          0x4be0 },
++    { XK_Up,            0x48e0 },
++    { XK_Right,         0x4de0 },
++    { XK_Down,          0x50e0 },
++    { XK_Prior,         0x49e0 },
++    { XK_Next,          0x51e0 },
++    { XK_End,           0x4fe0 },
++    { XK_Insert,        0x52e0 },
++    { XK_Num_Lock,      0x45 },
+ 
 -static void sdl_grab_start(void)
 -{
 -    SDL_ShowCursor(0);
@@ -551,7 +551,8 @@
 -    gui_grab = 1;
 -    sdl_update_caption();
 -}
--
++/* This block of codes is for Sun Type 4 keyboards... */
+ 
 -static void sdl_grab_end(void)
 -{
 -    SDL_WM_GrabInput(SDL_GRAB_OFF);
@@ -559,7 +560,11 @@
 -    gui_grab = 0;
 -    sdl_update_caption();
 -}
--
++    { XK_F27,           0x47e0 },       /* Home/R7/F27 */
++    { XK_F29,           0x49e0 },       /* Prior/R9/F29 */
++    { XK_F35,           0x51e0 },       /* Next/R15/F35 */
++    { XK_F33,           0x4fe0 },       /* End/R13/F33 */
+ 
 -static void sdl_send_mouse_event(int dz)
 -{
 -    int dx, dy, state, buttons;
@@ -573,7 +578,9 @@
 -        buttons |= MOUSE_EVENT_MBUTTON;
 -    kbd_mouse_event(dx, dy, dz, buttons);
 -}
--
++    { XK_F25,           0x36e0 },       /* Keypad divide/R5/F25 */
++    { XK_F26,           0x37 },         /* Keypad multiply/R6/F26 */
+ 
 -static void toggle_full_screen(DisplayState *ds)
 -{
 -    gui_fullscreen = !gui_fullscreen;
@@ -588,10 +595,64 @@
 -    vga_invalidate_display();
 -    vga_update_display();
 -}
-+    0x1b,
++    { XK_F23,           0x46 },         /* Scroll lock/R3/F23 */
  
 -static void sdl_refresh(DisplayState *ds)
--{
++    { XK_F31,           0x4c },         /* Keypad 5/R11/F31 */
++
++/* End of Sun type 4 codes */
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/qemu-nosdlgui.patch?r1=1.1&r2=1.2&f=u




More information about the pld-cvs-commit mailing list