Patchwork input: send kbd+mouse events only to running guests.

login
register
mail settings
Submitter Gerd Hoffmann
Date Feb. 15, 2012, 8:15 a.m.
Message ID <1329293737-20683-1-git-send-email-kraxel@redhat.com>
Download mbox | patch
Permalink /patch/141264/
State New
Headers show

Comments

Gerd Hoffmann - Feb. 15, 2012, 8:15 a.m.
Trying to interact with a stopped guest will queue up the events,
then send them all at once when the guest continues running, with
a high chance to have them cause unwanted actions.

Avoid that by only injecting the input events only when the guest
is in running state.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 input.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
Anthony Liguori - Feb. 17, 2012, 6:17 p.m.
On 02/15/2012 02:15 AM, Gerd Hoffmann wrote:
> Trying to interact with a stopped guest will queue up the events,
> then send them all at once when the guest continues running, with
> a high chance to have them cause unwanted actions.
>
> Avoid that by only injecting the input events only when the guest
> is in running state.
>
> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com>

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>   input.c |    6 ++++++
>   1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/input.c b/input.c
> index 9ade63f..b48408d 100644
> --- a/input.c
> +++ b/input.c
> @@ -130,6 +130,9 @@ void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry)
>
>   void kbd_put_keycode(int keycode)
>   {
> +    if (!runstate_is_running()) {
> +        return;
> +    }
>       if (qemu_put_kbd_event) {
>           qemu_put_kbd_event(qemu_put_kbd_event_opaque, keycode);
>       }
> @@ -151,6 +154,9 @@ void kbd_mouse_event(int dx, int dy, int dz, int buttons_state)
>       void *mouse_event_opaque;
>       int width, height;
>
> +    if (!runstate_is_running()) {
> +        return;
> +    }
>       if (QTAILQ_EMPTY(&mouse_handlers)) {
>           return;
>       }

Patch

diff --git a/input.c b/input.c
index 9ade63f..b48408d 100644
--- a/input.c
+++ b/input.c
@@ -130,6 +130,9 @@  void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry)
 
 void kbd_put_keycode(int keycode)
 {
+    if (!runstate_is_running()) {
+        return;
+    }
     if (qemu_put_kbd_event) {
         qemu_put_kbd_event(qemu_put_kbd_event_opaque, keycode);
     }
@@ -151,6 +154,9 @@  void kbd_mouse_event(int dx, int dy, int dz, int buttons_state)
     void *mouse_event_opaque;
     int width, height;
 
+    if (!runstate_is_running()) {
+        return;
+    }
     if (QTAILQ_EMPTY(&mouse_handlers)) {
         return;
     }