* [Qemu-devel] [Patch] Release mouse at window edges @ 2005-02-26 15:09 olig9 2005-02-27 4:37 ` Brad Campbell 2005-03-01 21:28 ` Fabrice Bellard 0 siblings, 2 replies; 8+ messages in thread From: olig9 @ 2005-02-26 15:09 UTC (permalink / raw) To: qemu-devel [-- Attachment #1: Type: text/plain, Size: 1231 bytes --] Hello, the attached patch makes Qemu ungrab the mouse cursor when the guest mouse cursor hits the window edges. It also makes qemu automatically grab the mouse when the host mouse cursor enters the window. The patch uses the hardware cursor position (in cirrus_vga.c); this means that it only works when the guest system uses a hardware cursor and when Cirrus VGA is used. For Linux guest (tested with GamesKnoppix), it works when enabling "hw_cursor" in XF86Config-4 (in "Device" setion for "cirrus" driver). For Win98se, it works when setting display hardware acceleration to maximum and using the standard b/w, non-animated cursor set. For Win2k Professional, it requires a newer Cirrus driver (old standard Win2k driver for "GD5446 compatible" is from 1999, new driver from ISDCorp is from 2000). It can be found at <http://www.hofnet.com/fire/browse.asp?target=%5CCIRRUS%20LOGIC%5CCL-GD5446%5CDRIVERS%5CWIN2000>. Besides the new driver, you have to do the same as under Win98, and you must disable mouse shadow. The patch applies cleanly to qemu-snapshot-2005-02-25_23.tar.bz2. Oliver Gerlich -- Lassen Sie Ihren Gedanken freien Lauf... z.B. per FreeSMS GMX bietet bis zu 100 FreeSMS/Monat: http://www.gmx.net/de/go/mail [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: releasemouse-1.diff --] [-- Type: text/x-patch; name="releasemouse-1.diff", Size: 3879 bytes --] diff -Naur qemu-snapshot-2005-02-10_23/hw/cirrus_vga.c qemu-snapshot-2005-02-10_23.patched/hw/cirrus_vga.c --- qemu-snapshot-2005-02-10_23/hw/cirrus_vga.c 2005-01-26 20:50:16.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/hw/cirrus_vga.c 2005-02-26 15:02:03.000000000 +0100 @@ -1172,6 +1172,13 @@ case 0xf0: // Graphics Cursor X s->sr[0x10] = reg_value; s->hw_cursor_x = (reg_value << 3) | (reg_index >> 5); +#ifdef DEBUG_CIRRUS + if (s->hw_cursor_x < 10 || s->hw_cursor_x > s->last_scr_width - 10) + printf("hw_cursor_x= %d; last_cursor_x= %d\n", s->hw_cursor_x, s->last_hw_cursor_x); +#endif + if ( (s->hw_cursor_x <= 1 || s->hw_cursor_x >= s->last_scr_width - 12) && + abs(s->hw_cursor_x - s->last_hw_cursor_x) > 4 ) + s->ds->cursor_release(s->ds, s->hw_cursor_x, s->hw_cursor_y); break; case 0x11: case 0x31: @@ -1183,6 +1190,13 @@ case 0xf1: // Graphics Cursor Y s->sr[0x11] = reg_value; s->hw_cursor_y = (reg_value << 3) | (reg_index >> 5); +#ifdef DEBUG_CIRRUS + if (s->hw_cursor_y < 10 || s->hw_cursor_y > s->last_scr_height - 10) + printf("hw_cursor_y= %d; last_cursor_y= %d\n", s->hw_cursor_y, s->last_hw_cursor_y); +#endif + if ( (s->hw_cursor_y <= 1 || s->hw_cursor_y >= s->last_scr_height - 12) && + abs(s->hw_cursor_y - s->last_hw_cursor_y) > 4 ) + s->ds->cursor_release(s->ds, s->hw_cursor_x, s->hw_cursor_y); break; case 0x07: // Extended Sequencer Mode case 0x08: // EEPROM Control @@ -2085,6 +2099,7 @@ invalidate_cursor1(s); s->last_hw_cursor_size = size; + s->ds->hw_cursor_size = size; s->last_hw_cursor_x = s->hw_cursor_x; s->last_hw_cursor_y = s->hw_cursor_y; /* compute the real cursor min and max y */ diff -Naur qemu-snapshot-2005-02-10_23/sdl.c qemu-snapshot-2005-02-10_23.patched/sdl.c --- qemu-snapshot-2005-02-10_23/sdl.c 2005-01-17 23:32:23.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/sdl.c 2005-02-26 15:26:40.000000000 +0100 @@ -308,6 +308,17 @@ vga_update_display(); } +void sdl_cursor_release(struct DisplayState *s, int x, int y) +{ + //printf("releasing cursor at %d/%d\n", x, y); + if (gui_grab && !gui_fullscreen && is_active_console(vga_console) && + SDL_GetModState() == KMOD_NONE && !SDL_GetMouseState(NULL, NULL)) + { + sdl_grab_end(); + SDL_WarpMouse(x, y); + } +} + static void sdl_refresh(DisplayState *ds) { SDL_Event ev1, *ev = &ev1; @@ -446,10 +457,12 @@ } break; case SDL_ACTIVEEVENT: - if (gui_grab && (ev->active.gain & SDL_ACTIVEEVENTMASK) == 0 && - !gui_fullscreen_initial_grab) { - sdl_grab_end(); - } + if (ev->active.state == SDL_APPMOUSEFOCUS && ev->active.gain == 1 && + !gui_grab && !gui_fullscreen && is_active_console(vga_console) && + ds->hw_cursor_size) + { + sdl_grab_start(); + } break; default: break; @@ -491,6 +504,7 @@ ds->dpy_update = sdl_update; ds->dpy_resize = sdl_resize; ds->dpy_refresh = sdl_refresh; + ds->cursor_release = sdl_cursor_release; sdl_resize(ds, 640, 400); sdl_update_caption(); diff -Naur qemu-snapshot-2005-02-10_23/vl.h qemu-snapshot-2005-02-10_23.patched/vl.h --- qemu-snapshot-2005-02-10_23/vl.h 2005-02-10 23:00:06.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/vl.h 2005-02-26 01:57:41.000000000 +0100 @@ -542,9 +542,11 @@ int depth; int width; int height; + int hw_cursor_size; void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); void (*dpy_refresh)(struct DisplayState *s); + void (*cursor_release)(struct DisplayState *s, int x, int y); }; static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-02-26 15:09 [Qemu-devel] [Patch] Release mouse at window edges olig9 @ 2005-02-27 4:37 ` Brad Campbell 2005-02-27 6:16 ` Brad Campbell 2005-03-01 21:28 ` Fabrice Bellard 1 sibling, 1 reply; 8+ messages in thread From: Brad Campbell @ 2005-02-27 4:37 UTC (permalink / raw) To: qemu-devel olig9@gmx.de wrote: > Hello, > the attached patch makes Qemu ungrab the mouse cursor when the guest mouse > cursor hits the window edges. It also makes qemu automatically grab the > mouse when the host mouse cursor enters the window. > This patch just causes qemu to abort on startup for me. bklaptop:~>strace -o log qemu -hda /tracks/qemu.skm.img.4 -m 256 -localtime Connected to host network interface: tun0 kill -9 stale dhcpd server Could not open SDL display What version of SDL are you using? I'm using Debian testing with libsdl-1.2.7+1.2.8 (which appears to be SDL CVS from October 2004). Regards, Brad -- "Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so." -- Douglas Adams ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-02-27 4:37 ` Brad Campbell @ 2005-02-27 6:16 ` Brad Campbell 0 siblings, 0 replies; 8+ messages in thread From: Brad Campbell @ 2005-02-27 6:16 UTC (permalink / raw) To: qemu-devel Brad Campbell wrote: > olig9@gmx.de wrote: > >> Hello, >> the attached patch makes Qemu ungrab the mouse cursor when the guest >> mouse >> cursor hits the window edges. It also makes qemu automatically grab the >> mouse when the host mouse cursor enters the window. >> > > This patch just causes qemu to abort on startup for me. > I stand corrected. The patch makes some changes to vl.h which do not cause the source files that depend on it to be re-built. A make clean ; configure ; make solved it. The recommended graphics drivers for 2k can be shoehorned into XP-SP1a. Just make sure you select 16 bit mode before you install the drivers, as they just puke in 24 bit mode and garble the display such as to make it pretty hard to actually do anything to reconfigure it after the fact! The mouse positioning has its fair share of quirks, but once the right drivers are installed it works as designed. Good job! Regards, Brad -- "Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so." -- Douglas Adams ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-02-26 15:09 [Qemu-devel] [Patch] Release mouse at window edges olig9 2005-02-27 4:37 ` Brad Campbell @ 2005-03-01 21:28 ` Fabrice Bellard 2005-03-02 4:48 ` Brad Campbell 1 sibling, 1 reply; 8+ messages in thread From: Fabrice Bellard @ 2005-03-01 21:28 UTC (permalink / raw) To: qemu-devel The idea is interesting. Does it cause regressions in the normal mode ? If so, an option to enable it may be good. I think it is a problem that your patch is dependent on the cursor size. Fabrice. olig9@gmx.de wrote: > Hello, > the attached patch makes Qemu ungrab the mouse cursor when the guest mouse > cursor hits the window edges. It also makes qemu automatically grab the > mouse when the host mouse cursor enters the window. > > The patch uses the hardware cursor position (in cirrus_vga.c); this means > that it only works when the guest system uses a hardware cursor and when > Cirrus VGA is used. > > For Linux guest (tested with GamesKnoppix), it works when enabling > "hw_cursor" in XF86Config-4 (in "Device" setion for "cirrus" driver). > For Win98se, it works when setting display hardware acceleration to maximum > and using the standard b/w, non-animated cursor set. > For Win2k Professional, it requires a newer Cirrus driver (old standard > Win2k driver for "GD5446 compatible" is from 1999, new driver from ISDCorp > is from 2000). It can be found > at > <http://www.hofnet.com/fire/browse.asp?target=%5CCIRRUS%20LOGIC%5CCL-GD5446%5CDRIVERS%5CWIN2000>. > Besides the new driver, you have to do the same as under Win98, and you must > disable mouse shadow. > > The patch applies cleanly to qemu-snapshot-2005-02-25_23.tar.bz2. > > Oliver Gerlich ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-03-01 21:28 ` Fabrice Bellard @ 2005-03-02 4:48 ` Brad Campbell 2005-03-02 9:53 ` Oliver Gerlich 0 siblings, 1 reply; 8+ messages in thread From: Brad Campbell @ 2005-03-02 4:48 UTC (permalink / raw) To: qemu-devel Fabrice Bellard wrote: > The idea is interesting. Does it cause regressions in the normal mode ? > If so, an option to enable it may be good. I think it is a problem that > your patch is dependent on the cursor size. > This is a good point. I have had to revert it for WinXP as every time the cursor changes shape (and it does all the time as you move over stuff in Office2003) it releases the grab. In addition I have had all manner of painting and rendering issues with the IDG display driver and have had to revert to the built in driver to get some software to paint properly. Nice idea, might need a little work still. Brad -- "Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so." -- Douglas Adams ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-03-02 4:48 ` Brad Campbell @ 2005-03-02 9:53 ` Oliver Gerlich 2005-03-02 11:24 ` Hetz Ben Hamo 2005-03-02 20:06 ` olig9 0 siblings, 2 replies; 8+ messages in thread From: Oliver Gerlich @ 2005-03-02 9:53 UTC (permalink / raw) To: qemu-devel Brad Campbell wrote: > Fabrice Bellard wrote: > >> The idea is interesting. Does it cause regressions in the normal mode >> ? If so, an option to enable it may be good. I think it is a problem >> that your patch is dependent on the cursor size. >> > > This is a good point. I have had to revert it for WinXP as every time > the cursor changes shape (and it does all the time as you move over > stuff in Office2003) it releases the grab. > > In addition I have had all manner of painting and rendering issues with > the IDG display driver and have had to revert to the built in driver to > get some software to paint properly. > > Nice idea, might need a little work still. > > Brad An extra switch would be good, indeed. Currently, grabbing/ungrabbing is disabled if no hw cursor is used, but it's not reliable enough (for example, Linux initializes hw cursor at framebuffer initialization, although no cursor is visible). The problem with cursor size appears differently on different systems. On Win98, hw_cursor_x goes from 1 to 1023 (in 1024x768), while on Win2k, it goes from 0 to 1013... The patch circumvents this problem with an ugly hack, but I have no idea how to get around this cleanly. Brad: your problems with Office might be related to another bug I discovered (Internet Explorer 5 "disables" hw cursor by moving the cursor to 2047/2047 which ungrabs the cursor as soon as it enters an IE window). I'll post an improved patch tonight, with this and other bugs fixed. BTW. is there a "make realclean" (or similar) which also deletes qemu-doc.html, manpages, kqemu temp files etc, so that I can easily diff my patched snapshot to an unpatched one? Oliver Gerlich ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-03-02 9:53 ` Oliver Gerlich @ 2005-03-02 11:24 ` Hetz Ben Hamo 2005-03-02 20:06 ` olig9 1 sibling, 0 replies; 8+ messages in thread From: Hetz Ben Hamo @ 2005-03-02 11:24 UTC (permalink / raw) To: qemu-devel, olig9 > BTW. is there a "make realclean" (or similar) which also deletes > qemu-doc.html, manpages, kqemu temp files etc, so that I can easily diff > my patched snapshot to an unpatched one? I think "make distclean" should do it... Thanks, Hetz ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [Patch] Release mouse at window edges 2005-03-02 9:53 ` Oliver Gerlich 2005-03-02 11:24 ` Hetz Ben Hamo @ 2005-03-02 20:06 ` olig9 1 sibling, 0 replies; 8+ messages in thread From: olig9 @ 2005-03-02 20:06 UTC (permalink / raw) To: qemu-devel [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 759 bytes --] > Brad: your problems with Office might be related to another bug I > discovered (Internet Explorer 5 "disables" hw cursor by moving the > cursor to 2047/2047 which ungrabs the cursor as soon as it enters an IE > window). I'll post an improved patch tonight, with this and other bugs > fixed. Here it is. Solves the problem with IE (and maybe with Office as well), and generally smoothes (un)grabbing. Still found no way to move guest mouse cursor on grab, but now at least it stays where it was at last ungrab. There is also now a command line switch (-autograb) which switches autograb/ungrab on. Oliver Gerlich -- DSL Komplett von GMX +++ Supergünstig und stressfrei einsteigen! AKTION "Kein Einrichtungspreis" nutzen: http://www.gmx.net/de/go/dsl [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: releasemouse-2.diff --] [-- Type: text/x-patch; name="releasemouse-2.diff", Size: 6568 bytes --] diff -ru qemu-snapshot-2005-02-10_23/hw/cirrus_vga.c qemu-snapshot-2005-02-10_23.patched/hw/cirrus_vga.c --- qemu-snapshot-2005-02-10_23/hw/cirrus_vga.c 2005-01-26 20:50:16.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/hw/cirrus_vga.c 2005-02-27 17:05:18.000000000 +0100 @@ -1172,6 +1172,18 @@ case 0xf0: // Graphics Cursor X s->sr[0x10] = reg_value; s->hw_cursor_x = (reg_value << 3) | (reg_index >> 5); +#ifdef DEBUG_CIRRUS + if (s->hw_cursor_x < 10 || s->hw_cursor_x > s->last_scr_width - 20) + printf("1; hw_cursor_x= %d; last_cursor_x= %d\n", s->hw_cursor_x, s->last_hw_cursor_x); +#endif + if ( (s->hw_cursor_x <= 1 && s->hw_cursor_x >= 0 && s->last_hw_cursor_x - (int) s->hw_cursor_x > 4)) + { + s->ds->cursor_release(s->ds, 0, s->hw_cursor_y); + } + else if (s->hw_cursor_x >= s->last_scr_width - 12 && s->hw_cursor_x <= s->last_scr_width + 1 && (int) s->hw_cursor_x - s->last_hw_cursor_x > 4) + { + s->ds->cursor_release(s->ds, s->last_scr_width + 1, s->hw_cursor_y); + } break; case 0x11: case 0x31: @@ -1183,6 +1195,18 @@ case 0xf1: // Graphics Cursor Y s->sr[0x11] = reg_value; s->hw_cursor_y = (reg_value << 3) | (reg_index >> 5); +#ifdef DEBUG_CIRRUS + if (s->hw_cursor_y < 10 || s->hw_cursor_y > s->last_scr_height - 20) + printf("4; hw_cursor_y= %d; last_cursor_y= %d\n", s->hw_cursor_y, s->last_hw_cursor_y); +#endif + if (s->hw_cursor_y <= 1 && s->hw_cursor_y >= 0 && s->last_hw_cursor_y - (int) s->hw_cursor_y > 4) + { + s->ds->cursor_release(s->ds, s->hw_cursor_x, 0); + } + else if (s->hw_cursor_y >= s->last_scr_height - 12 && s->hw_cursor_y <= s->last_scr_height + 1 && (int) s->hw_cursor_y - s->last_hw_cursor_y > 4) + { + s->ds->cursor_release(s->ds, s->hw_cursor_x, s->last_scr_height + 1); + } break; case 0x07: // Extended Sequencer Mode case 0x08: // EEPROM Control @@ -2085,6 +2109,7 @@ invalidate_cursor1(s); s->last_hw_cursor_size = size; + s->ds->hw_cursor_size = size; s->last_hw_cursor_x = s->hw_cursor_x; s->last_hw_cursor_y = s->hw_cursor_y; /* compute the real cursor min and max y */ diff -ru qemu-snapshot-2005-02-10_23/sdl.c qemu-snapshot-2005-02-10_23.patched/sdl.c --- qemu-snapshot-2005-02-10_23/sdl.c 2005-01-17 23:32:23.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/sdl.c 2005-03-02 20:59:15.000000000 +0100 @@ -39,6 +39,7 @@ static int gui_fullscreen_initial_grab; static int gui_grab_code = KMOD_LALT | KMOD_LCTRL; static uint8_t modifiers_state[256]; +static int ignoreMouseEvent = 0; static void sdl_update(DisplayState *ds, int x, int y, int w, int h) { @@ -283,6 +284,12 @@ { int dx, dy, state, buttons; state = SDL_GetRelativeMouseState(&dx, &dy); + if (ignoreMouseEvent) + { + ignoreMouseEvent = 0; + return; + } + buttons = 0; if (state & SDL_BUTTON(SDL_BUTTON_LEFT)) buttons |= MOUSE_EVENT_LBUTTON; @@ -308,6 +315,18 @@ vga_update_display(); } +void sdl_cursor_release(struct DisplayState *s, int x, int y) +{ + //printf("releasing cursor at %d/%d; grab=%d; fullscreen=%d; vga_console=%d; modstate=%d; mousestate=%d\n", + // x, y, gui_grab, gui_fullscreen, is_active_console(vga_console), SDL_GetModState(), SDL_GetMouseState(NULL, NULL)); + if (mouse_autograb && gui_grab && !gui_fullscreen && is_active_console(vga_console) && + SDL_GetModState() | KMOD_NUM == KMOD_NUM && !SDL_GetMouseState(NULL, NULL)) + { + sdl_grab_end(); + SDL_WarpMouse(x, y); + } +} + static void sdl_refresh(DisplayState *ds) { SDL_Event ev1, *ev = &ev1; @@ -446,10 +465,17 @@ } break; case SDL_ACTIVEEVENT: - if (gui_grab && (ev->active.gain & SDL_ACTIVEEVENTMASK) == 0 && + if (!mouse_autograb && gui_grab && (ev->active.gain & SDL_ACTIVEEVENTMASK) == 0 && !gui_fullscreen_initial_grab) { sdl_grab_end(); } + else if (mouse_autograb && ev->active.state == SDL_APPMOUSEFOCUS && ev->active.gain == 1 && + !gui_grab && !gui_fullscreen && is_active_console(vga_console) && + ds->hw_cursor_size) + { + ignoreMouseEvent = 1; + sdl_grab_start(); + } break; default: break; @@ -491,6 +517,7 @@ ds->dpy_update = sdl_update; ds->dpy_resize = sdl_resize; ds->dpy_refresh = sdl_refresh; + ds->cursor_release = sdl_cursor_release; sdl_resize(ds, 640, 400); sdl_update_caption(); diff -ru qemu-snapshot-2005-02-10_23/vl.c qemu-snapshot-2005-02-10_23.patched/vl.c --- qemu-snapshot-2005-02-10_23/vl.c 2005-02-10 23:00:06.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/vl.c 2005-03-02 20:48:27.000000000 +0100 @@ -137,6 +137,7 @@ TextConsole *vga_console; CharDriverState *serial_hds[MAX_SERIAL_PORTS]; CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; +int mouse_autograb = 0; /***********************************************************/ /* x86 ISA bus support */ @@ -2852,6 +2853,7 @@ QEMU_OPTION_full_screen, QEMU_OPTION_pidfile, QEMU_OPTION_no_kqemu, + QEMU_OPTION_mouse_autograb, }; typedef struct QEMUOption { @@ -2918,6 +2920,7 @@ { "loadvm", HAS_ARG, QEMU_OPTION_loadvm }, { "full-screen", 0, QEMU_OPTION_full_screen }, { "pidfile", HAS_ARG, QEMU_OPTION_pidfile }, + { "autograb", 0, QEMU_OPTION_mouse_autograb }, /* temporary options */ { "pci", 0, QEMU_OPTION_pci }, @@ -3370,6 +3373,9 @@ kqemu_allowed = 0; break; #endif + case QEMU_OPTION_mouse_autograb: + mouse_autograb = 1; + break; } } } diff -ru qemu-snapshot-2005-02-10_23/vl.h qemu-snapshot-2005-02-10_23.patched/vl.h --- qemu-snapshot-2005-02-10_23/vl.h 2005-02-10 23:00:06.000000000 +0100 +++ qemu-snapshot-2005-02-10_23.patched/vl.h 2005-03-02 20:59:18.000000000 +0100 @@ -125,6 +125,7 @@ extern int graphic_depth; extern const char *keyboard_layout; extern int kqemu_allowed; +extern int mouse_autograb; /* XXX: make it dynamic */ #if defined (TARGET_PPC) @@ -542,9 +543,11 @@ int depth; int width; int height; + int hw_cursor_size; void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); void (*dpy_refresh)(struct DisplayState *s); + void (*cursor_release)(struct DisplayState *s, int x, int y); }; static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-03-02 20:22 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-02-26 15:09 [Qemu-devel] [Patch] Release mouse at window edges olig9 2005-02-27 4:37 ` Brad Campbell 2005-02-27 6:16 ` Brad Campbell 2005-03-01 21:28 ` Fabrice Bellard 2005-03-02 4:48 ` Brad Campbell 2005-03-02 9:53 ` Oliver Gerlich 2005-03-02 11:24 ` Hetz Ben Hamo 2005-03-02 20:06 ` olig9
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).