[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/7] input: make vnc use mouse mode notifiers
From: |
Anthony Liguori |
Subject: |
[Qemu-devel] [PATCH 6/7] input: make vnc use mouse mode notifiers |
Date: |
Wed, 10 Mar 2010 10:51:08 -0600 |
When we switch to absolute mode, we send out a notification (if the client
supports it). Today, we only send this notification when the client sends us
a mouse event and we're in the wrong mode.
Signed-off-by: Anthony Liguori <address@hidden>
---
vnc.c | 13 ++++++++-----
vnc.h | 2 ++
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/vnc.c b/vnc.c
index 7ce73dc..f4d7f12 100644
--- a/vnc.c
+++ b/vnc.c
@@ -1110,6 +1110,7 @@ static void vnc_disconnect_finish(VncState *vs)
dcl->idle = 1;
}
+ qemu_remove_mouse_mode_change_notifier(&vs->mouse_mode_notifier);
vnc_remove_timer(vs->vd);
qemu_remove_led_event_handler(vs->led);
qemu_free(vs);
@@ -1427,8 +1428,11 @@ static void client_cut_text(VncState *vs, size_t len,
uint8_t *text)
{
}
-static void check_pointer_type_change(VncState *vs, int absolute)
+static void check_pointer_type_change(QEMUNotifier *notifier)
{
+ VncState *vs = container_of(notifier, VncState, mouse_mode_notifier);
+ int absolute = kbd_mouse_is_absolute();
+
if (vnc_has_feature(vs, VNC_FEATURE_POINTER_TYPE_CHANGE) && vs->absolute
!= absolute) {
vnc_write_u8(vs, 0);
vnc_write_u8(vs, 0);
@@ -1474,8 +1478,6 @@ static void pointer_event(VncState *vs, int button_mask,
int x, int y)
vs->last_x = x;
vs->last_y = y;
}
-
- check_pointer_type_change(vs, kbd_mouse_is_absolute());
}
static void reset_keys(VncState *vs)
@@ -1814,8 +1816,6 @@ static void set_encodings(VncState *vs, int32_t
*encodings, size_t n_encodings)
break;
}
}
-
- check_pointer_type_change(vs, kbd_mouse_is_absolute());
}
static void set_pixel_conversion(VncState *vs)
@@ -2431,6 +2431,9 @@ static void vnc_connect(VncDisplay *vd, int csock)
reset_keys(vs);
vs->led = qemu_add_led_event_handler(kbd_leds, vs);
+ vs->mouse_mode_notifier.notify = check_pointer_type_change;
+ qemu_add_mouse_mode_change_notifier(&vs->mouse_mode_notifier);
+
vnc_init_timer(vd);
/* vs might be free()ed here */
diff --git a/vnc.h b/vnc.h
index 0fc89bd..e1d764a 100644
--- a/vnc.h
+++ b/vnc.h
@@ -167,6 +167,8 @@ struct VncState
Buffer zlib_tmp;
z_stream zlib_stream[4];
+ QEMUNotifier mouse_mode_notifier;
+
QTAILQ_ENTRY(VncState) next;
};
--
1.6.5.2
- [Qemu-devel] [PATCH 1/7] Add support for generic notifier lists, Anthony Liguori, 2010/03/10
- [Qemu-devel] [PATCH 2/7] Rewrite mouse handlers to use QTAILQ and to have an activation function, Anthony Liguori, 2010/03/10
- [Qemu-devel] [PATCH 5/7] Expose whether a mouse is an absolute device via QMP and the human monitor., Anthony Liguori, 2010/03/10
- [Qemu-devel] [PATCH 3/7] Add kbd_mouse_has_absolute(), Anthony Liguori, 2010/03/10
- [Qemu-devel] [PATCH 6/7] input: make vnc use mouse mode notifiers,
Anthony Liguori <=
- [Qemu-devel] [PATCH 7/7] sdl: use mouse mode notifier, Anthony Liguori, 2010/03/10
- [Qemu-devel] [PATCH 4/7] Add notifier for mouse mode changes, Anthony Liguori, 2010/03/10
- Re: [Qemu-devel] [PATCH 1/7] Add support for generic notifier lists, Paul Brook, 2010/03/11
- [Qemu-devel] Re: [PATCH 1/7] Add support for generic notifier lists, Paul Brook, 2010/03/11