[Qemu-devel] [PATCH 36/42] input: move mouse mode notifier to new core

2014-01-28 Thread Gerd Hoffmann
Signed-off-by: Gerd Hoffmann kra...@redhat.com
---
 include/ui/console.h |  4 
 include/ui/input.h   |  4 
 ui/input-legacy.c| 34 +-
 ui/input.c   | 30 ++
 4 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/include/ui/console.h b/include/ui/console.h
index 71a0da3..9a282cb 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -48,10 +48,6 @@ void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry);
 
 void kbd_put_ledstate(int ledstate);
 
-/* Does the current mouse generate absolute events */
-void qemu_add_mouse_mode_change_notifier(Notifier *notify);
-void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
-
 struct MouseTransformInfo {
 /* Touchscreen resolution */
 int x;
diff --git a/include/ui/input.h b/include/ui/input.h
index 28afc45..4976f3d 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -49,4 +49,8 @@ void qemu_input_queue_rel(QemuConsole *src, InputAxis axis, 
int value);
 void qemu_input_queue_abs(QemuConsole *src, InputAxis axis,
   int value, int size);
 
+void qemu_input_check_mode_change(void);
+void qemu_add_mouse_mode_change_notifier(Notifier *notify);
+void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
+
 #endif /* INPUT_H */
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
index 26ff06f..7f8e72b 100644
--- a/ui/input-legacy.c
+++ b/ui/input-legacy.c
@@ -65,8 +65,6 @@ static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =
 QTAILQ_HEAD_INITIALIZER(led_handlers);
 static QTAILQ_HEAD(, QEMUPutMouseEntry) mouse_handlers =
 QTAILQ_HEAD_INITIALIZER(mouse_handlers);
-static NotifierList mouse_mode_notifiers =
-NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
 
 static const int key_defs[] = {
 [Q_KEY_CODE_SHIFT] = 0x2a,
@@ -364,20 +362,6 @@ void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry)
 g_free(entry);
 }
 
-static void check_mode_change(void)
-{
-static int current_is_absolute;
-int is_absolute;
-
-is_absolute = qemu_input_is_absolute();
-
-if (is_absolute != current_is_absolute) {
-notifier_list_notify(mouse_mode_notifiers, NULL);
-}
-
-current_is_absolute = is_absolute;
-}
-
 static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
InputEvent *evt)
 {
@@ -448,8 +432,6 @@ QEMUPutMouseEntry 
*qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
 s-s = qemu_input_handler_register((DeviceState *)s,
s-h);
 
-check_mode_change();
-
 return s;
 }
 
@@ -459,8 +441,6 @@ void qemu_activate_mouse_event_handler(QEMUPutMouseEntry 
*entry)
 QTAILQ_INSERT_HEAD(mouse_handlers, entry, node);
 
 qemu_input_handler_activate(entry-s);
-
-check_mode_change();
 }
 
 void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry)
@@ -471,8 +451,6 @@ void qemu_remove_mouse_event_handler(QEMUPutMouseEntry 
*entry)
 
 g_free(entry-qemu_put_mouse_event_name);
 g_free(entry);
-
-check_mode_change();
 }
 
 QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func,
@@ -551,15 +529,5 @@ void do_mouse_set(Monitor *mon, const QDict *qdict)
 monitor_printf(mon, Mouse at given index not found\n);
 }
 
-check_mode_change();
-}
-
-void qemu_add_mouse_mode_change_notifier(Notifier *notify)
-{
-notifier_list_add(mouse_mode_notifiers, notify);
-}
-
-void qemu_remove_mouse_mode_change_notifier(Notifier *notify)
-{
-notifier_remove(notify);
+qemu_input_check_mode_change();
 }
diff --git a/ui/input.c b/ui/input.c
index 00eef0f..a32bcff 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -13,6 +13,8 @@ struct QemuInputHandlerState {
 };
 static QTAILQ_HEAD(, QemuInputHandlerState) handlers =
 QTAILQ_HEAD_INITIALIZER(handlers);
+static NotifierList mouse_mode_notifiers =
+NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
 
 QemuInputHandlerState *qemu_input_handler_register(DeviceState *dev,
QemuInputHandler *handler)
@@ -24,6 +26,8 @@ QemuInputHandlerState 
*qemu_input_handler_register(DeviceState *dev,
 s-handler = handler;
 s-id = id++;
 QTAILQ_INSERT_TAIL(handlers, s, node);
+
+qemu_input_check_mode_change();
 return s;
 }
 
@@ -31,12 +35,14 @@ void qemu_input_handler_activate(QemuInputHandlerState *s)
 {
 QTAILQ_REMOVE(handlers, s, node);
 QTAILQ_INSERT_HEAD(handlers, s, node);
+qemu_input_check_mode_change();
 }
 
 void qemu_input_handler_unregister(QemuInputHandlerState *s)
 {
 QTAILQ_REMOVE(handlers, s, node);
 g_free(s);
+qemu_input_check_mode_change();
 }
 
 static QemuInputHandlerState*
@@ -276,3 +282,27 @@ void qemu_input_queue_abs(QemuConsole *src, InputAxis 
axis, int value, int size)
 qemu_input_event_send(src, evt);
 qapi_free_InputEvent(evt);
 }
+
+void qemu_input_check_mode_change(void)
+{
+static int current_is_absolute;
+int 

[Qemu-devel] [PATCH 36/42] input: move mouse mode notifier to new core

2013-12-16 Thread Gerd Hoffmann
Signed-off-by: Gerd Hoffmann kra...@redhat.com
---
 include/ui/console.h |  4 
 include/ui/input.h   |  4 
 ui/input-legacy.c| 34 +-
 ui/input.c   | 30 ++
 4 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/include/ui/console.h b/include/ui/console.h
index 71a0da3..9a282cb 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -48,10 +48,6 @@ void qemu_remove_led_event_handler(QEMUPutLEDEntry *entry);
 
 void kbd_put_ledstate(int ledstate);
 
-/* Does the current mouse generate absolute events */
-void qemu_add_mouse_mode_change_notifier(Notifier *notify);
-void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
-
 struct MouseTransformInfo {
 /* Touchscreen resolution */
 int x;
diff --git a/include/ui/input.h b/include/ui/input.h
index 28afc45..4976f3d 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -49,4 +49,8 @@ void qemu_input_queue_rel(QemuConsole *src, InputAxis axis, 
int value);
 void qemu_input_queue_abs(QemuConsole *src, InputAxis axis,
   int value, int size);
 
+void qemu_input_check_mode_change(void);
+void qemu_add_mouse_mode_change_notifier(Notifier *notify);
+void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
+
 #endif /* INPUT_H */
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
index 26ff06f..7f8e72b 100644
--- a/ui/input-legacy.c
+++ b/ui/input-legacy.c
@@ -65,8 +65,6 @@ static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =
 QTAILQ_HEAD_INITIALIZER(led_handlers);
 static QTAILQ_HEAD(, QEMUPutMouseEntry) mouse_handlers =
 QTAILQ_HEAD_INITIALIZER(mouse_handlers);
-static NotifierList mouse_mode_notifiers =
-NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
 
 static const int key_defs[] = {
 [Q_KEY_CODE_SHIFT] = 0x2a,
@@ -364,20 +362,6 @@ void qemu_remove_kbd_event_handler(QEMUPutKbdEntry *entry)
 g_free(entry);
 }
 
-static void check_mode_change(void)
-{
-static int current_is_absolute;
-int is_absolute;
-
-is_absolute = qemu_input_is_absolute();
-
-if (is_absolute != current_is_absolute) {
-notifier_list_notify(mouse_mode_notifiers, NULL);
-}
-
-current_is_absolute = is_absolute;
-}
-
 static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
InputEvent *evt)
 {
@@ -448,8 +432,6 @@ QEMUPutMouseEntry 
*qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
 s-s = qemu_input_handler_register((DeviceState *)s,
s-h);
 
-check_mode_change();
-
 return s;
 }
 
@@ -459,8 +441,6 @@ void qemu_activate_mouse_event_handler(QEMUPutMouseEntry 
*entry)
 QTAILQ_INSERT_HEAD(mouse_handlers, entry, node);
 
 qemu_input_handler_activate(entry-s);
-
-check_mode_change();
 }
 
 void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry)
@@ -471,8 +451,6 @@ void qemu_remove_mouse_event_handler(QEMUPutMouseEntry 
*entry)
 
 g_free(entry-qemu_put_mouse_event_name);
 g_free(entry);
-
-check_mode_change();
 }
 
 QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func,
@@ -551,15 +529,5 @@ void do_mouse_set(Monitor *mon, const QDict *qdict)
 monitor_printf(mon, Mouse at given index not found\n);
 }
 
-check_mode_change();
-}
-
-void qemu_add_mouse_mode_change_notifier(Notifier *notify)
-{
-notifier_list_add(mouse_mode_notifiers, notify);
-}
-
-void qemu_remove_mouse_mode_change_notifier(Notifier *notify)
-{
-notifier_remove(notify);
+qemu_input_check_mode_change();
 }
diff --git a/ui/input.c b/ui/input.c
index 00eef0f..a32bcff 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -13,6 +13,8 @@ struct QemuInputHandlerState {
 };
 static QTAILQ_HEAD(, QemuInputHandlerState) handlers =
 QTAILQ_HEAD_INITIALIZER(handlers);
+static NotifierList mouse_mode_notifiers =
+NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
 
 QemuInputHandlerState *qemu_input_handler_register(DeviceState *dev,
QemuInputHandler *handler)
@@ -24,6 +26,8 @@ QemuInputHandlerState 
*qemu_input_handler_register(DeviceState *dev,
 s-handler = handler;
 s-id = id++;
 QTAILQ_INSERT_TAIL(handlers, s, node);
+
+qemu_input_check_mode_change();
 return s;
 }
 
@@ -31,12 +35,14 @@ void qemu_input_handler_activate(QemuInputHandlerState *s)
 {
 QTAILQ_REMOVE(handlers, s, node);
 QTAILQ_INSERT_HEAD(handlers, s, node);
+qemu_input_check_mode_change();
 }
 
 void qemu_input_handler_unregister(QemuInputHandlerState *s)
 {
 QTAILQ_REMOVE(handlers, s, node);
 g_free(s);
+qemu_input_check_mode_change();
 }
 
 static QemuInputHandlerState*
@@ -276,3 +282,27 @@ void qemu_input_queue_abs(QemuConsole *src, InputAxis 
axis, int value, int size)
 qemu_input_event_send(src, evt);
 qapi_free_InputEvent(evt);
 }
+
+void qemu_input_check_mode_change(void)
+{
+static int current_is_absolute;
+int