input: avoid malloc for mouse events
PATCH 1/1 input: avoid malloc for mouse events
There is no reason to allocate mouse events using malloc, we can allcoate them from stack instead, save a few cpu cycles and make the code more readable with c99 initializers.
Suggested-by FelixYao <[email protected]>
Signed-off-by Gerd Hoffmann <[email protected]>
--- include/ui/input.h | 3 --- ui/input.c | 68 +++++++++++++++++++++++++----------------------------- 2 files changed, 31 insertions(+), 40 deletions(-)
include/ui/input.h +0 -3
@@ -49,7 +49,6 @@ int qemu_input_key_value_to_scancode(const KeyValue *value, bool down, int *codes);int qemu_input_linux_to_qcode (unsigned int lnx); -InputEvent *qemu_input_event_new_btn (InputButton btn,bool down);void qemu_input_queue_btn (QemuConsole *src,InputButton btn,bool down);void qemu_input_update_buttons (QemuConsole *src,uint32_t *button_map,uint32_t button_old,uint32_t button_new);
@@ -58,8 +57,6 @@ bool qemu_input_is_absolute(void);int qemu_input_scale_axis (int value,int min_in,int max_in,int min_out,int max_out); -InputEvent *qemu_input_event_new_move (InputEventKind kind, -InputAxis axis,int value);void qemu_input_queue_rel (QemuConsole *src,InputAxis axis,int value);void qemu_input_queue_abs (QemuConsole *src,InputAxis axis,int value,int min_in,int max_in);
ui/input.c +31 -37
90 lines not on this page · raw message
Signature · 1 line
2.9.3
Quoted 6 lines · Gerd Hoffmann
There is no reason to allocate mouse events using malloc, we can allcoate them from stack instead, save a few cpu cycles and make the code more readable with c99 initializers.
Suggested-by FelixYao <[email protected]>Signed-off-by Gerd Hoffmann <[email protected]>
Reviewed-by Markus Armbruster <[email protected]>
Quoted 3 lines · Gerd Hoffmann
There is no reason to allocate mouse events using malloc, we can allcoate them from stack instead, save a few cpu cycles and make the code more readable with c99 initializers.
Good idea.
Quoted 3 lines
Suggested-by FelixYao <[email protected]>Signed-off-by Gerd Hoffmann <[email protected]>
Reviewed-by Philippe Mathieu-Daudé <[email protected]>
Quoted 123 lines
--- include/ui/input.h | 3 --- ui/input.c | 68 +++++++++++++++++++++++++----------------------------- 2 files changed, 31 insertions(+), 40 deletions(-)include/ui/input.h +0
-3@@ -49,7 +49,6 @@ int qemu_input_key_value_to_scancode(const KeyValue *value, bool down, int *codes);int qemu_input_linux_to_qcode (unsigned int lnx); -InputEvent *qemu_input_event_new_btn (InputButton btn,bool down);void qemu_input_queue_btn (QemuConsole *src,InputButton btn,bool down);void qemu_input_update_buttons (QemuConsole *src,uint32_t *button_map,uint32_t button_old,uint32_t button_new);@@ -58,8 +57,6 @@ bool qemu_input_is_absolute(void);int qemu_input_scale_axis (int value,int min_in,int max_in,int min_out,int max_out); -InputEvent *qemu_input_event_new_move (InputEventKind kind, -InputAxis axis,int value);void qemu_input_queue_rel (QemuConsole *src,InputAxis axis,int value);void qemu_input_queue_abs (QemuConsole *src,InputAxis axis,int value,int min_in,int max_in);ui/input.c +31
-37@@ -458,22 +458,18 @@ void qemu_input_event_send_key_delay(uint32_t delay_ms) } } -InputEvent *qemu_input_event_new_btn (InputButton btn,bool down) -{ -InputEvent *evt =g_new0 (InputEvent,1 ); - evt->u.btn.data =g_new0 (InputBtnEvent,1 ); - evt->type =INPUT_EVENT_KIND_BTN ; - evt->u.btn.data->button = btn; - evt->u.btn.data->down = down; -return evt; -} -void qemu_input_queue_btn (QemuConsole *src,InputButton btn,bool down) { -InputEvent *evt; - evt =qemu_input_event_new_btn (btn, down); -qemu_input_event_send (src, evt); -qapi_free_InputEvent (evt); +InputBtnEvent bevt = { + .button = btn, + .down = down, + }; +InputEvent evt = { + .type =INPUT_EVENT_KIND_BTN , + .u.btn.data = &bevt, + }; + +qemu_input_event_send (src, &evt); } void qemu_input_update_buttons(QemuConsole *src, uint32_t *button_map,@@ -513,37 +509,35 @@ int qemu_input_scale_axis(int value,return ((int64_t )value - min_in) * range_out / range_in + min_out; } -InputEvent *qemu_input_event_new_move (InputEventKind kind, -InputAxis axis,int value) -{ -InputEvent *evt =g_new0 (InputEvent,1 ); -InputMoveEvent *move =g_new0 (InputMoveEvent,1 ); - - evt->type = kind; - evt->u.rel.data = move;/* evt->u.rel is the same as evt->u.abs */ - move->axis = axis; - move->value = value; -return evt; -} -void qemu_input_queue_rel (QemuConsole *src,InputAxis axis,int value) { -InputEvent *evt; - evt =qemu_input_event_new_move (INPUT_EVENT_KIND_REL , axis, value); -qemu_input_event_send (src, evt); -qapi_free_InputEvent (evt); +InputMoveEvent move = { + .axis = axis, + .value = value, + }; +InputEvent evt = { + .type =INPUT_EVENT_KIND_REL , + .u.rel.data = &move, + }; + +qemu_input_event_send (src, &evt); }void qemu_input_queue_abs (QemuConsole *src,InputAxis axis,int value,int min_in,int max_in) { -InputEvent *evt; -int scaled =qemu_input_scale_axis (value, min_in, max_in, +InputMoveEvent move = { + .axis = axis, + .value =qemu_input_scale_axis (value, min_in, max_in,INPUT_EVENT_ABS_MIN , -INPUT_EVENT_ABS_MAX ); - evt =qemu_input_event_new_move (INPUT_EVENT_KIND_ABS , axis, scaled); -qemu_input_event_send (src, evt); -qapi_free_InputEvent (evt); +INPUT_EVENT_ABS_MAX ), + }; +InputEvent evt = { + .type =INPUT_EVENT_KIND_ABS , + .u.abs.data = &move, + }; + +qemu_input_event_send (src, &evt); }void qemu_input_check_mode_change (void )