summaryrefslogtreecommitdiff
path: root/openembedded/packages/qemu
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-05-25 08:03:03 +0000
committerRichard Purdie <richard@openedhand.com>2006-05-25 08:03:03 +0000
commitf326127cf7bc6438bf367089e648a4359c9d39b5 (patch)
treeace7fc3a9e14cb60776313d582f091e6db4d97f9 /openembedded/packages/qemu
parent7defc582e098a099f9056aa4ff18e200361ad512 (diff)
downloadopenembedded-core-f326127cf7bc6438bf367089e648a4359c9d39b5.tar.gz
openembedded-core-f326127cf7bc6438bf367089e648a4359c9d39b5.tar.bz2
openembedded-core-f326127cf7bc6438bf367089e648a4359c9d39b5.tar.xz
openembedded-core-f326127cf7bc6438bf367089e648a4359c9d39b5.zip
qemu: Add patches to add RGB support and fix some mouse problems
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@416 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'openembedded/packages/qemu')
-rw-r--r--openembedded/packages/qemu/files/mouse_fix-r0.patch25
-rw-r--r--openembedded/packages/qemu/files/pl110_rgb-r0.patch219
-rw-r--r--openembedded/packages/qemu/qemu_cvs.bb5
3 files changed, 248 insertions, 1 deletions
diff --git a/openembedded/packages/qemu/files/mouse_fix-r0.patch b/openembedded/packages/qemu/files/mouse_fix-r0.patch
new file mode 100644
index 000000000..8cc19f039
--- /dev/null
+++ b/openembedded/packages/qemu/files/mouse_fix-r0.patch
@@ -0,0 +1,25 @@
+If the cursor is hidden (SDL_ShowCursor(0)) and the input is grabbed
+(SDL_WM_GrabInput(SDL_GRAB_ON)), then the mouse will give relative motion
+events even when the cursor reaches the edge fo the screen. This is currently
+only implemented on Windows and Linux/Unix-a-likes.
+
+Index: qemu/sdl.c
+===================================================================
+--- qemu.orig/sdl.c 2006-04-13 12:22:22.000000000 +0100
++++ qemu/sdl.c 2006-05-25 00:28:25.000000000 +0100
+@@ -280,13 +280,13 @@
+
+ static void sdl_hide_cursor(void)
+ {
+- SDL_SetCursor(sdl_cursor_hidden);
++ SDL_ShowCursor(0);
+ }
+
+ static void sdl_show_cursor(void)
+ {
+ if (!kbd_mouse_is_absolute()) {
+- SDL_SetCursor(sdl_cursor_normal);
++ SDL_ShowCursor(1);
+ }
+ }
+
diff --git a/openembedded/packages/qemu/files/pl110_rgb-r0.patch b/openembedded/packages/qemu/files/pl110_rgb-r0.patch
new file mode 100644
index 000000000..09e5898d3
--- /dev/null
+++ b/openembedded/packages/qemu/files/pl110_rgb-r0.patch
@@ -0,0 +1,219 @@
+Index: qemu/hw/pl110.c
+===================================================================
+--- qemu.orig/hw/pl110.c 2006-04-11 21:49:46.000000000 +0100
++++ qemu/hw/pl110.c 2006-05-24 22:53:00.000000000 +0100
+@@ -10,6 +10,7 @@
+ #include "vl.h"
+
+ #define PL110_CR_EN 0x001
++#define PL110_CR_BGR 0x100
+ #define PL110_CR_BEBO 0x200
+ #define PL110_CR_BEPO 0x400
+ #define PL110_CR_PWR 0x800
+@@ -115,6 +116,7 @@
+ int first, last = 0;
+ int dirty, new_dirty;
+ int i;
++ int bpp_offset;
+
+ if (!pl110_enabled(s))
+ return;
+@@ -146,12 +148,17 @@
+ fprintf(stderr, "pl110: Bad color depth\n");
+ exit(1);
+ }
++ if (s->cr & PL110_CR_BGR)
++ bpp_offset = 0;
++ else
++ bpp_offset = 18;
++
+ if (s->cr & PL110_CR_BEBO)
+- fn = fntable[s->bpp + 6];
++ fn = fntable[s->bpp + 6 + bpp_offset];
+ else if (s->cr & PL110_CR_BEPO)
+- fn = fntable[s->bpp + 12];
++ fn = fntable[s->bpp + 12 + bpp_offset];
+ else
+- fn = fntable[s->bpp];
++ fn = fntable[s->bpp + bpp_offset];
+
+ src_width = s->cols;
+ switch (s->bpp) {
+Index: qemu/hw/pl110_template.h
+===================================================================
+--- qemu.orig/hw/pl110_template.h 2006-02-19 12:31:32.000000000 +0000
++++ qemu/hw/pl110_template.h 2006-05-24 23:04:03.000000000 +0100
+@@ -24,6 +24,16 @@
+ #error unknown bit depth
+ #endif
+
++#undef RGB
++#define BORDER bgr
++#define ORDER 0
++#include "pl110_template.h"
++#define ORDER 1
++#include "pl110_template.h"
++#define ORDER 2
++#include "pl110_template.h"
++#define RGB
++#define BORDER rgb
+ #define ORDER 0
+ #include "pl110_template.h"
+ #define ORDER 1
+@@ -33,26 +43,47 @@
+
+ static drawfn glue(pl110_draw_fn_,BITS)[18] =
+ {
+- glue(pl110_draw_line1_lblp,BITS),
+- glue(pl110_draw_line2_lblp,BITS),
+- glue(pl110_draw_line4_lblp,BITS),
+- glue(pl110_draw_line8_lblp,BITS),
+- glue(pl110_draw_line16_lblp,BITS),
+- glue(pl110_draw_line32_lblp,BITS),
+-
+- glue(pl110_draw_line1_bbbp,BITS),
+- glue(pl110_draw_line2_bbbp,BITS),
+- glue(pl110_draw_line4_bbbp,BITS),
+- glue(pl110_draw_line8_bbbp,BITS),
+- glue(pl110_draw_line16_bbbp,BITS),
+- glue(pl110_draw_line32_bbbp,BITS),
+-
+- glue(pl110_draw_line1_lbbp,BITS),
+- glue(pl110_draw_line2_lbbp,BITS),
+- glue(pl110_draw_line4_lbbp,BITS),
+- glue(pl110_draw_line8_lbbp,BITS),
+- glue(pl110_draw_line16_lbbp,BITS),
+- glue(pl110_draw_line32_lbbp,BITS)
++ glue(pl110_draw_line1_lblp_bgr,BITS),
++ glue(pl110_draw_line2_lblp_bgr,BITS),
++ glue(pl110_draw_line4_lblp_bgr,BITS),
++ glue(pl110_draw_line8_lblp_bgr,BITS),
++ glue(pl110_draw_line16_lblp_bgr,BITS),
++ glue(pl110_draw_line32_lblp_bgr,BITS),
++
++ glue(pl110_draw_line1_bbbp_bgr,BITS),
++ glue(pl110_draw_line2_bbbp_bgr,BITS),
++ glue(pl110_draw_line4_bbbp_bgr,BITS),
++ glue(pl110_draw_line8_bbbp_bgr,BITS),
++ glue(pl110_draw_line16_bbbp_bgr,BITS),
++ glue(pl110_draw_line32_bbbp_bgr,BITS),
++
++ glue(pl110_draw_line1_lbbp_bgr,BITS),
++ glue(pl110_draw_line2_lbbp_bgr,BITS),
++ glue(pl110_draw_line4_lbbp_bgr,BITS),
++ glue(pl110_draw_line8_lbbp_bgr,BITS),
++ glue(pl110_draw_line16_lbbp_bgr,BITS),
++ glue(pl110_draw_line32_lbbp_bgr,BITS),
++
++ glue(pl110_draw_line1_lblp_rgb,BITS),
++ glue(pl110_draw_line2_lblp_rgb,BITS),
++ glue(pl110_draw_line4_lblp_rgb,BITS),
++ glue(pl110_draw_line8_lblp_rgb,BITS),
++ glue(pl110_draw_line16_lblp_rgb,BITS),
++ glue(pl110_draw_line32_lblp_rgb,BITS),
++
++ glue(pl110_draw_line1_bbbp_rgb,BITS),
++ glue(pl110_draw_line2_bbbp_rgb,BITS),
++ glue(pl110_draw_line4_bbbp_rgb,BITS),
++ glue(pl110_draw_line8_bbbp_rgb,BITS),
++ glue(pl110_draw_line16_bbbp_rgb,BITS),
++ glue(pl110_draw_line32_bbbp_rgb,BITS),
++
++ glue(pl110_draw_line1_lbbp_rgb,BITS),
++ glue(pl110_draw_line2_lbbp_rgb,BITS),
++ glue(pl110_draw_line4_lbbp_rgb,BITS),
++ glue(pl110_draw_line8_lbbp_rgb,BITS),
++ glue(pl110_draw_line16_lbbp_rgb,BITS),
++ glue(pl110_draw_line32_lbbp_rgb,BITS),
+ };
+
+ #undef BITS
+@@ -61,18 +92,18 @@
+ #else
+
+ #if ORDER == 0
+-#define NAME glue(lblp, BITS)
++#define NAME glue(glue(lblp_, BORDER), BITS)
+ #ifdef WORDS_BIGENDIAN
+ #define SWAP_WORDS 1
+ #endif
+ #elif ORDER == 1
+-#define NAME glue(bbbp, BITS)
++#define NAME glue(glue(bbbp_, BORDER), BITS)
+ #ifndef WORDS_BIGENDIAN
+ #define SWAP_WORDS 1
+ #endif
+ #else
+ #define SWAP_PIXELS 1
+-#define NAME glue(lbbp, BITS)
++#define NAME glue(glue(lbbp_, BORDER), BITS)
+ #ifdef WORDS_BIGENDIAN
+ #define SWAP_WORDS 1
+ #endif
+@@ -195,27 +226,34 @@
+ #ifdef SWAP_WORDS
+ data = bswap32(data);
+ #endif
++#ifdef RGB
++#define LSB r
++#define MSB b
++#else
++#define LSB b
++#define MSB r
++#endif
+ #if 0
+- r = data & 0x1f;
++ LSB = data & 0x1f;
+ data >>= 5;
+ g = data & 0x3f;
+ data >>= 6;
+- b = data & 0x1f;
++ MSB = data & 0x1f;
+ data >>= 5;
+ #else
+- r = (data & 0x1f) << 3;
++ LSB = (data & 0x1f) << 3;
+ data >>= 5;
+ g = (data & 0x3f) << 2;
+ data >>= 6;
+- b = (data & 0x1f) << 3;
++ MSB = (data & 0x1f) << 3;
+ data >>= 5;
+ #endif
+ COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
+- r = (data & 0x1f) << 3;
++ LSB = (data & 0x1f) << 3;
+ data >>= 5;
+ g = (data & 0x3f) << 2;
+ data >>= 6;
+- b = (data & 0x1f) << 3;
++ MSB = (data & 0x1f) << 3;
+ data >>= 5;
+ COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
+ width -= 2;
+@@ -229,14 +267,21 @@
+ unsigned int r, g, b;
+ while (width > 0) {
+ data = *(uint32_t *)src;
++#ifdef RGB
++#define LSB r
++#define MSB b
++#else
++#define LSB b
++#define MSB r
++#endif
+ #ifdef SWAP_WORDS
+- r = data & 0xff;
++ LSB = data & 0xff;
+ g = (data >> 8) & 0xff;
+- b = (data >> 16) & 0xff;
++ MSB = (data >> 16) & 0xff;
+ #else
+- r = (data >> 24) & 0xff;
++ LSB = (data >> 24) & 0xff;
+ g = (data >> 16) & 0xff;
+- b = (data >> 8) & 0xff;
++ MSB = (data >> 8) & 0xff;
+ #endif
+ COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
+ width--;
diff --git a/openembedded/packages/qemu/qemu_cvs.bb b/openembedded/packages/qemu/qemu_cvs.bb
index 5ebc18c6a..bf0c76152 100644
--- a/openembedded/packages/qemu/qemu_cvs.bb
+++ b/openembedded/packages/qemu/qemu_cvs.bb
@@ -1,9 +1,12 @@
LICENSE = "GPL"
PV = "0.8.0+cvs${SRCDATE}"
+PR = "r1"
SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
file://nodocs_cvs.patch;patch=1 \
- file://configure.patch;patch=1"
+ file://configure.patch;patch=1 \
+ file://mouse_fix-r0.patch;patch=1 \
+ file://pl110_rgb-r0.patch;patch=1"
S = "${WORKDIR}/qemu"