* [Qemu-devel] [PATCH 0/2] mouse fixups
@ 2010-10-08 10:30 Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 1/2] vmmouse: adapt to mouse handler changes Gerd Hoffmann
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2010-10-08 10:30 UTC (permalink / raw)
To: qemu-devel; +Cc: hdegoede, Gerd Hoffmann
Hi,
In the 0.13 devel cycle the mouse handler activation code has been
updated, but (at least) two drivers have not been updated accordingly:
vmmouse and usb-wacom. This patch series updates them so they are
functional again.
IMHO the patches should also be cherry-picked into stable.
The patches are also available in the git repository at:
git://anongit.freedesktop.org/spice/qemu mouse.1
Gerd Hoffmann (2):
vmmouse: adapt to mouse handler changes.
wacom tablet: activate event handlers.
hw/usb-wacom.c | 13 ++++++++++---
hw/vmmouse.c | 31 +++++++++++++++++++++----------
2 files changed, 31 insertions(+), 13 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 1/2] vmmouse: adapt to mouse handler changes.
2010-10-08 10:30 [Qemu-devel] [PATCH 0/2] mouse fixups Gerd Hoffmann
@ 2010-10-08 10:30 ` Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 2/2] wacom tablet: activate event handlers Gerd Hoffmann
2010-10-20 19:04 ` [Qemu-devel] [PATCH 0/2] mouse fixups Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2010-10-08 10:30 UTC (permalink / raw)
To: qemu-devel; +Cc: hdegoede, Gerd Hoffmann
This patch updates the vmmouse handler registration and activation.
Old behavior:
vmmouse_read_id, vmmouse_request_relative and vmmouse_request_absolute
unregister the handler and re-register it.
New behavior:
vmmouse_request_relative and vmmouse_request_absolute will unregister
the handler in case the mode did change. Then register and active the
handler with current mode if needed.
Note that the old code never ever *activates* the handler, so the
vmmouse doesn't receive events. This trips up Fedora 14 for example:
Boot a default install without usb tablet, watch the X-Server activating
the vmmouse then, enjoy a non-functional mouse.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/vmmouse.c | 31 +++++++++++++++++++++----------
1 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/hw/vmmouse.c b/hw/vmmouse.c
index f359304..2097119 100644
--- a/hw/vmmouse.c
+++ b/hw/vmmouse.c
@@ -100,16 +100,29 @@ static void vmmouse_mouse_event(void *opaque, int x, int y, int dz, int buttons_
i8042_isa_mouse_fake_event(s->ps2_mouse);
}
-static void vmmouse_update_handler(VMMouseState *s)
+static void vmmouse_remove_handler(VMMouseState *s)
{
if (s->entry) {
qemu_remove_mouse_event_handler(s->entry);
s->entry = NULL;
}
- if (s->status == 0)
+}
+
+static void vmmouse_update_handler(VMMouseState *s, int absolute)
+{
+ if (s->status != 0) {
+ return;
+ }
+ if (s->absolute != absolute) {
+ s->absolute = absolute;
+ vmmouse_remove_handler(s);
+ }
+ if (s->entry == NULL) {
s->entry = qemu_add_mouse_event_handler(vmmouse_mouse_event,
s, s->absolute,
"vmmouse");
+ qemu_activate_mouse_event_handler(s->entry);
+ }
}
static void vmmouse_read_id(VMMouseState *s)
@@ -121,28 +134,25 @@ static void vmmouse_read_id(VMMouseState *s)
s->queue[s->nb_queue++] = VMMOUSE_VERSION;
s->status = 0;
- vmmouse_update_handler(s);
}
static void vmmouse_request_relative(VMMouseState *s)
{
DPRINTF("vmmouse_request_relative()\n");
- s->absolute = 0;
- vmmouse_update_handler(s);
+ vmmouse_update_handler(s, 0);
}
static void vmmouse_request_absolute(VMMouseState *s)
{
DPRINTF("vmmouse_request_absolute()\n");
- s->absolute = 1;
- vmmouse_update_handler(s);
+ vmmouse_update_handler(s, 1);
}
static void vmmouse_disable(VMMouseState *s)
{
DPRINTF("vmmouse_disable()\n");
s->status = 0xffff;
- vmmouse_update_handler(s);
+ vmmouse_remove_handler(s);
}
static void vmmouse_data(VMMouseState *s, uint32_t *data, uint32_t size)
@@ -154,7 +164,7 @@ static void vmmouse_data(VMMouseState *s, uint32_t *data, uint32_t size)
if (size == 0 || size > 6 || size > s->nb_queue) {
printf("vmmouse: driver requested too much data %d\n", size);
s->status = 0xffff;
- vmmouse_update_handler(s);
+ vmmouse_remove_handler(s);
return;
}
@@ -239,7 +249,8 @@ static int vmmouse_post_load(void *opaque, int version_id)
{
VMMouseState *s = opaque;
- vmmouse_update_handler(s);
+ vmmouse_remove_handler(s);
+ vmmouse_update_handler(s, s->absolute);
return 0;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] wacom tablet: activate event handlers.
2010-10-08 10:30 [Qemu-devel] [PATCH 0/2] mouse fixups Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 1/2] vmmouse: adapt to mouse handler changes Gerd Hoffmann
@ 2010-10-08 10:30 ` Gerd Hoffmann
2010-10-20 19:04 ` [Qemu-devel] [PATCH 0/2] mouse fixups Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2010-10-08 10:30 UTC (permalink / raw)
To: qemu-devel; +Cc: hdegoede, Gerd Hoffmann
Add qemu_activate_mouse_event_handler() calls to the usb wavom tablet so
it actually receives events. Also make sure we only remove the handler
if we registered it before.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb-wacom.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/hw/usb-wacom.c b/hw/usb-wacom.c
index fe052eb..47f26cd 100644
--- a/hw/usb-wacom.c
+++ b/hw/usb-wacom.c
@@ -160,6 +160,7 @@ static int usb_mouse_poll(USBWacomState *s, uint8_t *buf, int len)
if (!s->mouse_grabbed) {
s->eh_entry = qemu_add_mouse_event_handler(usb_mouse_event, s, 0,
"QEMU PenPartner tablet");
+ qemu_activate_mouse_event_handler(s->eh_entry);
s->mouse_grabbed = 1;
}
@@ -197,6 +198,7 @@ static int usb_wacom_poll(USBWacomState *s, uint8_t *buf, int len)
if (!s->mouse_grabbed) {
s->eh_entry = qemu_add_mouse_event_handler(usb_wacom_event, s, 1,
"QEMU PenPartner tablet");
+ qemu_activate_mouse_event_handler(s->eh_entry);
s->mouse_grabbed = 1;
}
@@ -334,8 +336,10 @@ static int usb_wacom_handle_control(USBDevice *dev, int request, int value,
ret = 0;
break;
case WACOM_SET_REPORT:
- qemu_remove_mouse_event_handler(s->eh_entry);
- s->mouse_grabbed = 0;
+ if (s->mouse_grabbed) {
+ qemu_remove_mouse_event_handler(s->eh_entry);
+ s->mouse_grabbed = 0;
+ }
s->mode = data[0];
ret = 0;
break;
@@ -397,7 +401,10 @@ static void usb_wacom_handle_destroy(USBDevice *dev)
{
USBWacomState *s = (USBWacomState *) dev;
- qemu_remove_mouse_event_handler(s->eh_entry);
+ if (s->mouse_grabbed) {
+ qemu_remove_mouse_event_handler(s->eh_entry);
+ s->mouse_grabbed = 0;
+ }
}
static int usb_wacom_initfn(USBDevice *dev)
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH 0/2] mouse fixups
2010-10-08 10:30 [Qemu-devel] [PATCH 0/2] mouse fixups Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 1/2] vmmouse: adapt to mouse handler changes Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 2/2] wacom tablet: activate event handlers Gerd Hoffmann
@ 2010-10-20 19:04 ` Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Anthony Liguori @ 2010-10-20 19:04 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: hdegoede, qemu-devel
On 10/08/2010 05:30 AM, Gerd Hoffmann wrote:
> Hi,
>
> In the 0.13 devel cycle the mouse handler activation code has been
> updated, but (at least) two drivers have not been updated accordingly:
> vmmouse and usb-wacom. This patch series updates them so they are
> functional again.
>
> IMHO the patches should also be cherry-picked into stable.
>
> The patches are also available in the git repository at:
>
> git://anongit.freedesktop.org/spice/qemu mouse.1
>
Applied. Thanks.
Regards,
Anthony Liguori
> Gerd Hoffmann (2):
> vmmouse: adapt to mouse handler changes.
> wacom tablet: activate event handlers.
>
> hw/usb-wacom.c | 13 ++++++++++---
> hw/vmmouse.c | 31 +++++++++++++++++++++----------
> 2 files changed, 31 insertions(+), 13 deletions(-)
>
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-10-20 19:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-08 10:30 [Qemu-devel] [PATCH 0/2] mouse fixups Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 1/2] vmmouse: adapt to mouse handler changes Gerd Hoffmann
2010-10-08 10:30 ` [Qemu-devel] [PATCH 2/2] wacom tablet: activate event handlers Gerd Hoffmann
2010-10-20 19:04 ` [Qemu-devel] [PATCH 0/2] mouse fixups Anthony Liguori
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).