All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.