]> git.pld-linux.org Git - packages/qemu.git/commitdiff
- dropped long time outdated, non-maintained nosdlgui patch
authorJakub Bogusz <qboosh@pld-linux.org>
Tue, 23 Oct 2012 17:29:41 +0000 (19:29 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Tue, 23 Oct 2012 17:29:41 +0000 (19:29 +0200)
qemu-nosdlgui.patch [deleted file]
qemu.spec

diff --git a/qemu-nosdlgui.patch b/qemu-nosdlgui.patch
deleted file mode 100644 (file)
index c448399..0000000
+++ /dev/null
@@ -1,1075 +0,0 @@
-diff -Nur qemu-0.7.0.orig/Makefile.target qemu-0.7.0.chng/Makefile.target
---- qemu-0.7.0.orig/Makefile.target    2005-07-06 23:38:02.000000000 +0000
-+++ qemu-0.7.0.chng/Makefile.target    2005-07-06 23:42:48.000000000 +0000
-@@ -392,7 +392,7 @@
- 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) $(VL_LIBS) -L/usr/X11R6/lib -lX11 -lpthread
- cocoa.o: cocoa.m
-       $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
---- 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
-- * 
-- * Copyright (c) 2003 Fabrice Bellard
-- * 
-- * Permission is hereby granted, free of charge, to any person obtaining a copy
-- * of this software and associated documentation files (the "Software"), to deal
-- * in the Software without restriction, including without limitation the rights
-- * 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:
-- *
-- * 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
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-- * THE SOFTWARE.
-- */
--#include "vl.h"
-+ * Copyright (c) 2004 Vladimit Oleynik <dzo@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
-+
-+#define icon_width 40
-+#define icon_height 32
-+static unsigned char icon_bits[] = {
-+  0x3e, 0x26, 0x00, 0x00, 0x00,
-+  0x24, 0x04, 0x01, 0x00, 0x00,
-+  0x04, 0x04, 0x01, 0x00, 0x00,
-+  0x14, 0xb7, 0xb3, 0x06, 0x00,
-+  0x9c, 0x24, 0x49, 0x05, 0x00,
-+  0x94, 0x24, 0x49, 0x01, 0x00,
-+  0x84, 0x24, 0x49, 0x01, 0x00,
-+  0xa4, 0x24, 0x49, 0x01, 0x00,
-+  0x3e, 0x27, 0x32, 0x03, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x08, 0x00, 0x77, 0x00, 0x00,
-+  0x04, 0x00, 0x22, 0x00, 0x00,
-+  0x04, 0x00, 0x14, 0x00, 0x00,
-+  0xce, 0x1a, 0x14, 0x00, 0x00,
-+  0x24, 0x15, 0x08, 0x00, 0x00,
-+  0x24, 0x05, 0x14, 0x00, 0x00,
-+  0x24, 0x05, 0x14, 0x00, 0x00,
-+  0x24, 0x05, 0x22, 0x00, 0x00,
-+  0xcc, 0x0c, 0x07, 0x00, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x00, 0x00, 0x00, 0x00, 0x00,
-+  0x04, 0x00, 0x01, 0x00, 0x00,
-+  0x04, 0x00, 0x01, 0x00, 0x00,
-+  0xce, 0xb6, 0xb3, 0xb6, 0x0d,
-+  0x24, 0x15, 0x49, 0x49, 0x09,
-+  0xe4, 0x09, 0x79, 0x49, 0x09,
-+  0x24, 0x08, 0x09, 0x49, 0x09,
-+  0x24, 0x15, 0x49, 0x49, 0x09,
-+  0xc8, 0x36, 0x32, 0x49, 0x0e,
-+};
-+
-+#include "vl.h"
--static SDL_Surface *screen;
--static int gui_grab; /* if true, all keyboard/mouse events are grabbed */
- static int last_vm_running;
--static int gui_saved_grab;
--static int gui_fullscreen;
--static int gui_key_modifier_pressed;
--static int gui_keysym;
--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)
-+static Display *qx_display;
-+static int q_x_screen_num;
-+static Window win;
-+static GC gc;
-+static XImage *ximage = NULL;
-+static int     default_depth;
-+static Visual  *default_visual;
-+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;
-+    long supplied_return;
-+
-+    if ( XGetWMNormalHints(qx_display, win, &hints, &supplied_return) &&
-+       supplied_return & PMaxSize ) {
-+      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);
-+      XResizeWindow(qx_display, win, w, h);
-+    }
-+    ximage = XCreateImage(qx_display, default_visual,
-+           default_depth,          // depth of image (bitplanes)
-+           ZPixmap,
-+           0,                      // offset
-+           NULL,                   // malloc() space after
-+           w, h,                   // x & y size of image
-+           32,                     // # bits of padding
-+           0 );                    // bytes_per_line, let X11 calculate
-+    if (!ximage) {
-+      fprintf(stderr, "Could not XCreateImage()\n");
-+      exit(1);
-+    }
-+    width = ds->width = w;
-+    height = ds->height = h;
-+    ds->depth = ximage->bits_per_pixel;
-+    ds->linesize = ximage->bytes_per_line;
-+    ds->data = (char *) malloc( (size_t) (ximage->bytes_per_line * h) );
-+    if (!ds->data) {
-+      fprintf(stderr, "Could not malloc Image data\n");
-+      exit(1);
-+    }
-+    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]";
-+      if (vm_running && gui_grab)
-+              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);
-+
-+      XStringListToTextProperty(&icon, 1, &iconprop);
-+      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;
-+  if (gui_grab) {
-+      /* 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;
--static const uint8_t x_keycode_to_pc_keycode[61] = {
--   0xc7,      /*  97  Home   */
--   0xc8,      /*  98  Up     */
--   0xc9,      /*  99  PgUp   */
--   0xcb,      /* 100  Left   */
--   0x4c,        /* 101  KP-5   */
--   0xcd,      /* 102  Right  */
--   0xcf,      /* 103  End    */
--   0xd0,      /* 104  Down   */
--   0xd1,      /* 105  PgDn   */
--   0xd2,      /* 106  Ins    */
--   0xd3,      /* 107  Del    */
--   0x9c,      /* 108  Enter  */
--   0x9d,      /* 109  Ctrl-R */
--   0x0,       /* 110  Pause  */
--   0xb7,      /* 111  Print  */
--   0xb5,      /* 112  Divide */
--   0xb8,      /* 113  Alt-R  */
--   0xc6,      /* 114  Break  */   
--   0x0,         /* 115 */
--   0x0,         /* 116 */
--   0x0,         /* 117 */
--   0x0,         /* 118 */
--   0x0,         /* 119 */
--   0x70,         /* 120 Hiragana_Katakana */
--   0x0,         /* 121 */
--   0x0,         /* 122 */
--   0x73,         /* 123 backslash */
--   0x0,         /* 124 */
--   0x0,         /* 125 */
--   0x0,         /* 126 */
--   0x0,         /* 127 */
--   0x0,         /* 128 */
--   0x79,         /* 129 Henkan */
--   0x0,         /* 130 */
--   0x7b,         /* 131 Muhenkan */
--   0x0,         /* 132 */
--   0x7d,         /* 133 Yen */
--   0x0,         /* 134 */
--   0x0,         /* 135 */
--   0x47,         /* 136 KP_7 */
--   0x48,         /* 137 KP_8 */
--   0x49,         /* 138 KP_9 */
--   0x4b,         /* 139 KP_4 */
--   0x4c,         /* 140 KP_5 */
--   0x4d,         /* 141 KP_6 */
--   0x4f,         /* 142 KP_1 */
--   0x50,         /* 143 KP_2 */
--   0x51,         /* 144 KP_3 */
--   0x52,         /* 145 KP_0 */
--   0x53,         /* 146 KP_. */
--   0x47,         /* 147 KP_HOME */
--   0x48,         /* 148 KP_UP */
--   0x49,         /* 149 KP_PgUp */
--   0x4b,         /* 150 KP_Left */
--   0x4c,         /* 151 KP_ */
--   0x4d,         /* 152 KP_Right */
--   0x4f,         /* 153 KP_End */
--   0x50,         /* 154 KP_Down */
--   0x51,         /* 155 KP_PgDn */
--   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) {
--        keycode -= 8; /* just an offset */
--    } else if (keycode < 158) {
--        /* use conversion table */
--        keycode = x_keycode_to_pc_keycode[keycode - 97];
--    } else {
--        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,
-+    0x0a, 0x0b, 0x09, 0x0d, 0x33, 0x0c, 0x34, 0x35,
-+    0x0b, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-+    0x09, 0x0a, 0x27, 0x27, 0x33, 0x0d, 0x34, 0x35,
-+#ifdef KBUK             /* at symbol */
-+    0x28,
-+#else
-+    0x03,
-+#endif
-+    0x1e, 0x30, 0x2e, 0x20, 0x12, 0x21, 0x22,
-+    0x23, 0x17, 0x24, 0x25, 0x26, 0x32, 0x31, 0x18,
-+    0x19, 0x10, 0x13, 0x1f, 0x14, 0x16, 0x2f, 0x11,
-+    0x2d, 0x15, 0x2c, 0x1a,
-+#ifdef KBUK             /* backslash */
-+    0x56,
-+#else
-+    0x2b,
-+#endif
-+    0x1b, 0x07, 0x0c,
-+    0x29, 0x1e, 0x30, 0x2e, 0x20, 0x12, 0x21, 0x22,
-+    0x23, 0x17, 0x24, 0x25, 0x26, 0x32, 0x31, 0x18,
-+    0x19, 0x10, 0x13, 0x1f, 0x14, 0x16, 0x2f, 0x11,
-+    0x2d, 0x15, 0x2c, 0x1a,
-+#ifdef KBUK             /* vertical bar */
-+    0x56,
-+#else
-+    0x2b,
-+#endif
--    if (ev->keysym.sym == SDLK_PAUSE) {
--        /* specific case */
--        v = 0;
--        if (ev->type == SDL_KEYUP)
--            v |= 0x80;
--        kbd_put_keycode(0xe1);
--        kbd_put_keycode(0x1d | v);
--        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 */
--        reset_keys();
--        return;
--    case 0x2a:                          /* Left Shift */
--    case 0x36:                          /* Right Shift */
--    case 0x1d:                          /* Left CTRL */
--    case 0x9d:                          /* Right CTRL */
--    case 0x38:                          /* Left ALT */
--    case 0xb8:                         /* Right ALT */
--        if (ev->type == SDL_KEYUP)
--            modifiers_state[keycode] = 0;
--        else
--            modifiers_state[keycode] = 1;
--        break;
--    case 0x45: /* num lock */
--    case 0x3a: /* caps lock */
--        /* SDL does not send the key up event, so we generate it */
--        kbd_put_keycode(keycode);
--        kbd_put_keycode(keycode | 0x80);
--        return;
--    }
--    /* now send the key code */
--    if (keycode & 0x80)
--        kbd_put_keycode(0xe0);
--    if (ev->type == SDL_KEYUP)
--        kbd_put_keycode(keycode | 0x80);
--    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];
--    strcpy(buf, "QEMU");
--    if (!vm_running) {
--        strcat(buf, " [Stopped]");
--    }
--    if (gui_grab) {
--        strcat(buf, " - Press Ctrl-Alt to exit grab");
--    }
--    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);
--    SDL_WM_GrabInput(SDL_GRAB_ON);
--    /* dummy read to avoid moving the mouse */
--    SDL_GetRelativeMouseState(NULL, NULL);
--    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);
--    SDL_ShowCursor(1);
--    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;
--    state = SDL_GetRelativeMouseState(&dx, &dy);
--    buttons = 0;
--    if (state & SDL_BUTTON(SDL_BUTTON_LEFT))
--        buttons |= MOUSE_EVENT_LBUTTON;
--    if (state & SDL_BUTTON(SDL_BUTTON_RIGHT))
--        buttons |= MOUSE_EVENT_RBUTTON;
--    if (state & SDL_BUTTON(SDL_BUTTON_MIDDLE))
--        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;
--    sdl_resize(ds, screen->w, screen->h);
--    if (gui_fullscreen) {
--        gui_saved_grab = gui_grab;
--        sdl_grab_start();
--    } else {
--        if (!gui_saved_grab)
--            sdl_grab_end();
--    }
--    vga_invalidate_display();
--    vga_update_display();
--}
-+    { 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 */
-+
-+    { XK_KP_Enter,      0x1ce0 },
-+    { XK_KP_Multiply,   0x37 },
-+    { XK_KP_Add,        0x4e },
-+    { XK_KP_Subtract,   0x4a },
-+    { XK_KP_Divide,     0x36e0 },
-+    { XK_KP_Decimal,    0x53 },
-+
-+    { XK_KP_0,          0x52 },
-+    { XK_KP_1,          0x4f },
-+    { XK_KP_2,          0x50 },
-+    { XK_KP_3,          0x51 },
-+    { XK_KP_4,          0x4b },
-+    { XK_KP_5,          0x4c },
-+    { XK_KP_6,          0x4d },
-+    { XK_KP_7,          0x47 },
-+    { XK_KP_8,          0x48 },
-+    { XK_KP_9,          0x49 },
-+
-+    { XK_F1,            0x3b },
-+    { XK_Help,          0x3b }, /* openwin mapped */
-+    { XK_F2,            0x3c },
-+    { XK_F3,            0x3d },
-+    { XK_F4,            0x3e },
-+    { XK_F5,            0x3f },
-+    { XK_F19,           0x3c }, /* openwin mapped */
-+    { XK_F20,           0x3d }, /* openwin mapped */
-+    { XK_F16,           0x3e }, /* openwin mapped */
-+    { XK_F18,           0x3f }, /* openwin mapped */
-+    { XK_F6,            0x40 },
-+    { XK_F7,            0x41 },
-+    { XK_F8,            0x42 },
-+    { XK_F9,            0x43 },
-+    { XK_F10,           0x44 },
-+    { XK_F11,           0x57 },
-+    { XK_F12,           0x58 },
-+
-+    { XK_Shift_L,       0x2a },
-+    { XK_Shift_R,       0x36 },
-+    { XK_Control_L,     0x1d },
-+    { XK_Control_R,     0x1de0 },
-+    { XK_Meta_L,        0x38 },
-+    { XK_Alt_L,         0x38 },
-+    { XK_Meta_R,        0x38e0 },
-+    { XK_Alt_R,         0x38e0 },
-+
-+    { XK_Scroll_Lock,   0x46 },
-+    { XK_Caps_Lock,     0xba3a }
-+};
-+
-+static void x_refresh(DisplayState *ds)
- {
--    SDL_Event ev1, *ev = &ev1;
--    int mod_state;
--                     
--    if (last_vm_running != vm_running) {
--        last_vm_running = vm_running;
--        sdl_update_caption();
--    }
-+  XEvent report;
-+  KeySym key;
-+  int mouse_update = 0;
-+  unsigned scan;
-+  XButtonEvent *button_event;
-+  XExposeEvent *expose_event;
-+  int count;
-+  static int gui_key_modifier_pressed;
--    if (is_active_console(vga_console)) 
--        vga_update_display();
-+  if (last_vm_running != vm_running) {
-+      last_vm_running = vm_running;
-+      x_SetCaption();
-+  }
--    while (SDL_PollEvent(ev)) {
--        switch (ev->type) {
--        case SDL_VIDEOEXPOSE:
--            sdl_update(ds, 0, 0, screen->w, screen->h);
--            break;
--        case SDL_KEYDOWN:
--        case SDL_KEYUP:
--            if (ev->type == SDL_KEYDOWN) {
--                mod_state = (SDL_GetModState() & gui_grab_code) ==
--                    gui_grab_code;
--                gui_key_modifier_pressed = mod_state;
--                if (gui_key_modifier_pressed) {
--                    int keycode;
--                    keycode = sdl_keyevent_to_keycode(&ev->key);
--                    switch(keycode) {
--                    case 0x21: /* 'f' key on US keyboard */
--                        toggle_full_screen(ds);
--                        gui_keysym = 1;
--                        break;
--                    case 0x02 ... 0x0a: /* '1' to '9' keys */ 
--                        console_select(keycode - 0x02);
--                        if (is_active_console(vga_console)) {
--                            /* tell the vga console to redisplay itself */
--                            vga_invalidate_display();
--                        } else {
--                            /* display grab if going to a text console */
--                            if (gui_grab)
--                                sdl_grab_end();
--                        }
--                        gui_keysym = 1;
--                        break;
--                    default:
--                        break;
--                    }
--                } else if (!is_active_console(vga_console)) {
--                    int keysym;
--                    keysym = 0;
--                    if (ev->key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) {
--                        switch(ev->key.keysym.sym) {
--                        case SDLK_UP: keysym = QEMU_KEY_CTRL_UP; break;
--                        case SDLK_DOWN: keysym = QEMU_KEY_CTRL_DOWN; break;
--                        case SDLK_LEFT: keysym = QEMU_KEY_CTRL_LEFT; break;
--                        case SDLK_RIGHT: keysym = QEMU_KEY_CTRL_RIGHT; break;
--                        case SDLK_HOME: keysym = QEMU_KEY_CTRL_HOME; break;
--                        case SDLK_END: keysym = QEMU_KEY_CTRL_END; break;
--                        case SDLK_PAGEUP: keysym = QEMU_KEY_CTRL_PAGEUP; break;
--                        case SDLK_PAGEDOWN: keysym = QEMU_KEY_CTRL_PAGEDOWN; break;
--                        default: break;
--                        }
--                    } else {
--                        switch(ev->key.keysym.sym) {
--                        case SDLK_UP: keysym = QEMU_KEY_UP; break;
--                        case SDLK_DOWN: keysym = QEMU_KEY_DOWN; break;
--                        case SDLK_LEFT: keysym = QEMU_KEY_LEFT; break;
--                        case SDLK_RIGHT: keysym = QEMU_KEY_RIGHT; break;
--                        case SDLK_HOME: keysym = QEMU_KEY_HOME; break;
--                        case SDLK_END: keysym = QEMU_KEY_END; break;
--                        case SDLK_PAGEUP: keysym = QEMU_KEY_PAGEUP; break;
--                        case SDLK_PAGEDOWN: keysym = QEMU_KEY_PAGEDOWN; break;
--                        case SDLK_BACKSPACE: keysym = QEMU_KEY_BACKSPACE; break;                        case SDLK_DELETE: keysym = QEMU_KEY_DELETE; break;
--                        default: break;
--                        }
--                    }
--                    if (keysym) {
--                        kbd_put_keysym(keysym);
--                    } else if (ev->key.keysym.unicode != 0) {
--                        kbd_put_keysym(ev->key.keysym.unicode);
--                    }
--                }
--            } else if (ev->type == SDL_KEYUP) {
--                mod_state = (ev->key.keysym.mod & gui_grab_code);
--                if (!mod_state) {
--                    if (gui_key_modifier_pressed) {
--                        if (gui_keysym == 0) {
--                            /* exit/enter grab if pressing Ctrl-Alt */
--                            if (!gui_grab)
--                                sdl_grab_start();
--                            else
--                                sdl_grab_end();
--                            /* SDL does not send back all the
--                               modifiers key, so we must correct it */
--                            reset_keys();
--                            break;
--                        }
--                        gui_key_modifier_pressed = 0;
--                        gui_keysym = 0;
--                    }
--                }
--            }
--            if (is_active_console(vga_console)) 
--                sdl_process_key(&ev->key);
--            break;
--        case SDL_QUIT:
--            qemu_system_shutdown_request();
--            break;
--        case SDL_MOUSEMOTION:
--            if (gui_grab) {
--                sdl_send_mouse_event(0);
--            }
--            break;
--        case SDL_MOUSEBUTTONDOWN:
--        case SDL_MOUSEBUTTONUP:
--            {
--                SDL_MouseButtonEvent *bev = &ev->button;
--                if (!gui_grab) {
--                    if (ev->type == SDL_MOUSEBUTTONDOWN &&
--                        (bev->state & SDL_BUTTON_LMASK)) {
--                        /* start grabbing all events */
--                        sdl_grab_start();
--                    }
--                } else {
--                    int dz;
--                    dz = 0;
--#ifdef SDL_BUTTON_WHEELUP
--                    if (bev->button == SDL_BUTTON_WHEELUP) {
--                        dz = -1;
--                    } else if (bev->button == SDL_BUTTON_WHEELDOWN) {
--                        dz = 1;
--                    }
--#endif               
--                    sdl_send_mouse_event(dz);
--                }
--            }
--            break;
--        case SDL_ACTIVEEVENT:
--            if (gui_grab && (ev->active.gain & SDL_ACTIVEEVENTMASK) == 0 &&
--                !gui_fullscreen_initial_grab) {
--                sdl_grab_end();
--            }
--            break;
--        default:
--            break;
--        }
-+  if (is_active_console(vga_console))
-+      vga_update_display();
-+
-+  while (XPending(qx_display) > 0)  {
-+    XNextEvent(qx_display, &report);
-+
-+    switch  (report.type) {
-+
-+    case Expose:
-+      expose_event = &report.xexpose;
-+      x_update(ds, expose_event->x, expose_event->y, expose_event->width, expose_event->height);
-+      break;
-+
-+    case ButtonPress:
-+      button_event = (XButtonEvent *) &report;
-+      current_x = button_event->x;
-+      current_y = button_event->y;
-+      switch (button_event->button) {
-+      case Button1:
-+        if(!gui_grab) {
-+              /* start grabbing all events */
-+              trigger_mouse_grab();
-+              break;
-+        }
-+        mouse_button_state |= 0x01;
-+        mouse_update = 1;
-+        break;
-+      case Button2:
-+        mouse_button_state |= 0x04;
-+        mouse_update = 1;
-+        break;
-+      case Button3:
-+        mouse_button_state |= 0x02;
-+        mouse_update = 1;
-+        break;
-+      }
-+      break;
-+
-+    case ButtonRelease:
-+      button_event = (XButtonEvent *) &report;
-+      current_x = button_event->x;
-+      current_y = button_event->y;
-+      switch (button_event->button) {
-+      case Button1:
-+        mouse_button_state &= ~0x01;
-+        mouse_update = 1;
-+        break;
-+      case Button2:
-+        mouse_button_state &= ~0x04;
-+        mouse_update = 1;
-+        break;
-+      case Button3:
-+        mouse_button_state &= ~0x02;
-+        mouse_update = 1;
-+        break;
-+      }
-+      break;
-+
-+    case KeyPress:
-+    case KeyRelease:
-+      key = XLookupKeysym(&report.xkey, 0);
-+
-+      if(key == XK_Shift_L) {
-+      if(report.type == KeyPress)
-+              gui_key_modifier_pressed |= 5;
-+      else
-+              gui_key_modifier_pressed &= ~1;
-+      } else if(key == XK_Control_L) {
-+      if(report.type == KeyPress)
-+              gui_key_modifier_pressed |= 6;
-+      else
-+              gui_key_modifier_pressed &= ~2;
-+      }
-+      if((gui_key_modifier_pressed & 7) == 7) {
-+      trigger_mouse_grab();
-+      gui_key_modifier_pressed &= ~4;
-+      break;
-+      }
-+
-+      /* XK_F21 is for sun type 4 keyboards.. */
-+      if (key == XK_Break || key == XK_F21)
-+        key = XK_Pause;
-+
-+      if (key == XK_Pause) {
-+        if (report.xkey.state & ControlMask)
-+            scan = 0xc6e046e0;
-+        else
-+            scan = 0x451de1;
-+      }                   /* XK_F22 is sun type 4 PrtScr */
-+      else if (key == XK_Print || key == XK_F22) {
-+        if (report.xkey.state & Mod1Mask)
-+            scan = 0x54;
-+        else
-+            scan = 0x37e02ae0;
-+      }
-+#ifdef KBUK
-+      else if ((key == XK_numbersign) && (report.xkey.state & ShiftMask))
-+        scan = 0x4;
-+#endif
-+      else if (key == XK_sterling)
-+        scan = 0x4;
-+      else {
-+        if (key >= 0x20 && key <= 0x20+sizeof(scan_table1))
-+                scan = scan_table1[key - 0x20];
-+         else   {
-+                scan = 0;
-+                for (count = 0; count <
-+                     (sizeof(scan_table2)/sizeof(scan_table2[0]));
-+                     count++)
-+                        if (scan_table2[count].key == key) {
-+                                scan = scan_table2[count].scan_code;
-+                                break;
-+                                }
-+                }
-+        if (scan == 0)
-+                break;
-+        }
-+      if (is_active_console(vga_console))
-+      for (count = 0; scan; count++) {
-+        if (key != XK_Caps_Lock && report.type == KeyRelease)
-+            kbd_put_keycode(0x80 | (scan & 0xff));
-+        else
-+            kbd_put_keycode(scan & 0xff);
-+
-+        scan >>= 8;
-+      }
-+      break;
-+
-+    case MotionNotify:
-+      current_x = report.xmotion.x;
-+      current_y = report.xmotion.y;
-+      mouse_update = 1;
-+      break;
-+
-+    default:
-+      break;
-+    } /* end switch */
-+
-+    if (mouse_update && gui_grab) {
-+      send_keyboard_mouse_status();
-+      mouse_update = 0;
-     }
-+  } /* end while */
- }
--static void sdl_cleanup(void) 
-+void X_display_init(DisplayState *ds, int full_screen)
- {
--    SDL_Quit();
--}
-+  Pixmap icon_pixmap;
-+  XSizeHints size_hints;
-+  XWMHints wm_hints;
-+  XClassHint class_hints;
-+  XSetWindowAttributes attr;
-+  unsigned long valuemask = 0; /* ignore XGCvalues and use defaults */
-+  XGCValues values;
-+  char *progname = "qemu";
-+  XEvent report;
--void sdl_display_init(DisplayState *ds, int full_screen)
--{
--    int flags;
-+  if ( (qx_display=XOpenDisplay(NULL)) == NULL ) {
-+      fprintf(stderr, "Could not open X display\n");
-+      exit(1);
-+  }
-+  /* get screen size from display structure macro */
-+  q_x_screen_num = DefaultScreen(qx_display);
--#if defined(__APPLE__)
--    /* always use generic keymaps */
--    if (!keyboard_layout)
--        keyboard_layout = "en-us";
--#endif
--    if(keyboard_layout) {
--        kbd_layout = init_keyboard_layout(keyboard_layout);
--        if (!kbd_layout)
--            exit(1);
--    }
-+  /* create opaque window */
-+  win = XCreateSimpleWindow(qx_display, RootWindow(qx_display, q_x_screen_num),
-+    0, 0,     /* x y  would be settable from the command line or resource database. */
-+    720,      /* initial vga 80*25 9x16 */
-+    400,
-+    4,        /* border_width four pixels */
-+    BlackPixel(qx_display, q_x_screen_num),
-+    BlackPixel(qx_display, q_x_screen_num));
--    flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
--    if (SDL_Init (flags)) {
--        fprintf(stderr, "Could not initialize SDL - exiting\n");
--        exit(1);
--    }
--#ifndef _WIN32
--    /* NOTE: we still want Ctrl-C to work, so we undo the SDL redirections */
--    signal(SIGINT, SIG_DFL);
--    signal(SIGQUIT, SIG_DFL);
--#endif
-+  default_depth  = DefaultDepth(qx_display, q_x_screen_num);
-+  default_visual = DefaultVisual(qx_display, q_x_screen_num);
--    ds->dpy_update = sdl_update;
--    ds->dpy_resize = sdl_resize;
--    ds->dpy_refresh = sdl_refresh;
-+  icon_pixmap = XCreateBitmapFromData(qx_display, win, icon_bits,
-+                                      icon_width, icon_height);
--    sdl_resize(ds, 640, 400);
--    sdl_update_caption();
--    SDL_EnableKeyRepeat(250, 50);
--    SDL_EnableUNICODE(1);
--    gui_grab = 0;
-+  size_hints.flags =  PSize | PMinSize | PMaxSize;
-+  size_hints.max_width = size_hints.min_width = 720;
-+  size_hints.max_height = size_hints.min_height = 400;
--    atexit(sdl_cleanup);
--    if (full_screen) {
--        gui_fullscreen = 1;
--        gui_fullscreen_initial_grab = 1;
--        sdl_grab_start();
--    }
-+  wm_hints.initial_state = NormalState;
-+  wm_hints.input = True;
-+  wm_hints.icon_pixmap = icon_pixmap;
-+  wm_hints.flags = StateHint | IconPixmapHint | InputHint;
-+
-+  class_hints.res_name = "qemu";
-+  class_hints.res_class = "Qemu";
-+
-+  XSetWMProperties(qx_display, win,
-+                   NULL, NULL, // windowName iconName, set from x_SetCaption
-+                   &progname, 1, &size_hints, &wm_hints,
-+                   &class_hints);
-+  // (attempt to) enable backing store
-+  attr.save_under=1;
-+  attr.backing_store=Always;
-+  XChangeWindowAttributes(qx_display, win, CWSaveUnder|CWBackingStore, &attr);
-+
-+  XSelectInput(qx_display, win,
-+              KeyPressMask | KeyReleaseMask |
-+              ButtonPressMask | ButtonReleaseMask | PointerMotionMask |
-+              ExposureMask| StructureNotifyMask);
-+
-+  gc = XCreateGC(qx_display, win, valuemask, &values);
-+
-+  XSetForeground(qx_display, gc, WhitePixel(qx_display, q_x_screen_num));
-+  XSetBackground(qx_display, gc, BlackPixel(qx_display, q_x_screen_num));
-+
-+  /* Display window */
-+  XMapWindow(qx_display, win);
-+  XSync(qx_display, /* no discard */ 0);
-+
-+  while (1) {
-+    XNextEvent(qx_display, &report);
-+    if (report.type == MapNotify) break;
-+  }
-+  ds->dpy_update = x_update;
-+  ds->dpy_resize = x_resize;
-+  ds->dpy_refresh = x_refresh;
-+  x_resize(ds, 720, 400);
-+//  trigger_mouse_grab();
- }
index 413721eb85996269558033e17327a491246687ac..881759509f206475dc646e7d0cdc4f6c36701a5a 100644 (file)
--- a/qemu.spec
+++ b/qemu.spec
@@ -8,8 +8,7 @@
 #   qemu-0.11.1-*.x86_64.rpm - OK
 #
 # Conditional build:
-%bcond_with    nosdlgui                # do not use SDL gui (use X11 instead)
-
+#
 Summary:       QEMU CPU Emulator
 Summary(pl.UTF-8):     QEMU - emulator procesora
 Name:          qemu
@@ -21,7 +20,6 @@ Source0:      http://wiki.qemu.org/download/%{name}-%{version}.tar.bz2
 # Source0-md5: 78eb1e984f4532aa9f2bdd3c127b5b61
 Patch0:                %{name}-cflags.patch
 Patch1:                vgabios-widescreens.patch
-Patch6:                %{name}-nosdlgui.patch
 # Proof of concept, for reference, do not remove
 Patch8:                %{name}-kde_virtual_workspaces_hack.patch
 Patch17:       %{name}-whitelist.patch
@@ -425,7 +423,6 @@ Ten pakiet zawiera emulator systemu z procesorem Xtensa.
 %setup -q
 %patch0 -p1
 %patch1 -p1
-%{?with_nosdlgui:%patch6 -p1}
 #patch8 -p1
 %patch17 -p0
 
This page took 0.13734 seconds and 4 git commands to generate.