[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 7/8] ui/cocoa: Statically allocate dcl
From: |
Gerd Hoffmann |
Subject: |
[PULL 7/8] ui/cocoa: Statically allocate dcl |
Date: |
Fri, 19 Feb 2021 23:00:35 +0100 |
From: Akihiko Odaki <akihiko.odaki@gmail.com>
There is no need of dynamic allocation as dcl is a small singleton.
Static allocation reduces code size and makes hacking with ui/cocoa a
bit easier.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <20210219084419.90181-1-akihiko.odaki@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
ui/cocoa.m | 65 ++++++++++++++++++++++++++----------------------------
1 file changed, 31 insertions(+), 34 deletions(-)
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 13f19bece14d..0ef5fdf3b7a3 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -72,8 +72,24 @@ typedef struct {
int height;
} QEMUScreen;
+static void cocoa_update(DisplayChangeListener *dcl,
+ int x, int y, int w, int h);
+
+static void cocoa_switch(DisplayChangeListener *dcl,
+ DisplaySurface *surface);
+
+static void cocoa_refresh(DisplayChangeListener *dcl);
+
NSWindow *normalWindow, *about_window;
-static DisplayChangeListener *dcl;
+static const DisplayChangeListenerOps dcl_ops = {
+ .dpy_name = "cocoa",
+ .dpy_gfx_update = cocoa_update,
+ .dpy_gfx_switch = cocoa_switch,
+ .dpy_refresh = cocoa_refresh,
+};
+static DisplayChangeListener dcl = {
+ .ops = &dcl_ops,
+};
static int last_buttons;
static int cursor_hide = 1;
@@ -607,15 +623,15 @@ QemuCocoaView *cocoaView;
// Toggle the stored state.
modifiers_state[keycode] = !modifiers_state[keycode];
// Send a keyup or keydown depending on the state.
- qemu_input_event_send_key_qcode(dcl->con, keycode,
modifiers_state[keycode]);
+ qemu_input_event_send_key_qcode(dcl.con, keycode,
modifiers_state[keycode]);
}
- (void) toggleStatefulModifier: (int)keycode {
// Toggle the stored state.
modifiers_state[keycode] = !modifiers_state[keycode];
// Generate keydown and keyup.
- qemu_input_event_send_key_qcode(dcl->con, keycode, true);
- qemu_input_event_send_key_qcode(dcl->con, keycode, false);
+ qemu_input_event_send_key_qcode(dcl.con, keycode, true);
+ qemu_input_event_send_key_qcode(dcl.con, keycode, false);
}
// Does the work of sending input to the monitor
@@ -799,7 +815,7 @@ QemuCocoaView *cocoaView;
}
if (qemu_console_is_graphic(NULL)) {
- qemu_input_event_send_key_qcode(dcl->con, keycode, true);
+ qemu_input_event_send_key_qcode(dcl.con, keycode, true);
} else {
[self handleMonitorInput: event];
}
@@ -814,7 +830,7 @@ QemuCocoaView *cocoaView;
}
if (qemu_console_is_graphic(NULL)) {
- qemu_input_event_send_key_qcode(dcl->con, keycode, false);
+ qemu_input_event_send_key_qcode(dcl.con, keycode, false);
}
break;
case NSEventTypeMouseMoved:
@@ -892,9 +908,9 @@ QemuCocoaView *cocoaView;
/* Determine if this is a scroll up or scroll down event */
buttons = ([event deltaY] > 0) ?
INPUT_BUTTON_WHEEL_UP : INPUT_BUTTON_WHEEL_DOWN;
- qemu_input_queue_btn(dcl->con, buttons, true);
+ qemu_input_queue_btn(dcl.con, buttons, true);
qemu_input_event_sync();
- qemu_input_queue_btn(dcl->con, buttons, false);
+ qemu_input_queue_btn(dcl.con, buttons, false);
qemu_input_event_sync();
}
/*
@@ -922,7 +938,7 @@ QemuCocoaView *cocoaView;
[INPUT_BUTTON_MIDDLE] = MOUSE_EVENT_MBUTTON,
[INPUT_BUTTON_RIGHT] = MOUSE_EVENT_RBUTTON
};
- qemu_input_update_buttons(dcl->con, bmap, last_buttons, buttons);
+ qemu_input_update_buttons(dcl.con, bmap, last_buttons, buttons);
last_buttons = buttons;
}
if (isMouseGrabbed) {
@@ -932,12 +948,12 @@ QemuCocoaView *cocoaView;
* clicks in the titlebar.
*/
if ([self screenContainsPoint:p]) {
- qemu_input_queue_abs(dcl->con, INPUT_AXIS_X, p.x, 0,
screen.width);
- qemu_input_queue_abs(dcl->con, INPUT_AXIS_Y, screen.height
- p.y, 0, screen.height);
+ qemu_input_queue_abs(dcl.con, INPUT_AXIS_X, p.x, 0,
screen.width);
+ qemu_input_queue_abs(dcl.con, INPUT_AXIS_Y, screen.height
- p.y, 0, screen.height);
}
} else {
- qemu_input_queue_rel(dcl->con, INPUT_AXIS_X, (int)[event
deltaX]);
- qemu_input_queue_rel(dcl->con, INPUT_AXIS_Y, (int)[event
deltaY]);
+ qemu_input_queue_rel(dcl.con, INPUT_AXIS_X, (int)[event
deltaX]);
+ qemu_input_queue_rel(dcl.con, INPUT_AXIS_Y, (int)[event
deltaY]);
}
} else {
return false;
@@ -1006,7 +1022,7 @@ QemuCocoaView *cocoaView;
for (index = 0; index < max_index; index++) {
if (modifiers_state[index]) {
modifiers_state[index] = 0;
- qemu_input_event_send_key_qcode(dcl->con, index, false);
+ qemu_input_event_send_key_qcode(dcl.con, index, false);
}
}
});
@@ -1833,19 +1849,6 @@ static void cocoa_refresh(DisplayChangeListener *dcl)
[pool release];
}
-static void cocoa_cleanup(void)
-{
- COCOA_DEBUG("qemu_cocoa: cocoa_cleanup\n");
- g_free(dcl);
-}
-
-static const DisplayChangeListenerOps dcl_ops = {
- .dpy_name = "cocoa",
- .dpy_gfx_update = cocoa_update,
- .dpy_gfx_switch = cocoa_switch,
- .dpy_refresh = cocoa_refresh,
-};
-
static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts)
{
COCOA_DEBUG("qemu_cocoa: cocoa_display_init\n");
@@ -1866,14 +1869,8 @@ static void cocoa_display_init(DisplayState *ds,
DisplayOptions *opts)
cursor_hide = 0;
}
- dcl = g_malloc0(sizeof(DisplayChangeListener));
-
// register vga output callbacks
- dcl->ops = &dcl_ops;
- register_displaychangelistener(dcl);
-
- // register cleanup function
- atexit(cocoa_cleanup);
+ register_displaychangelistener(&dcl);
}
static QemuDisplay qemu_display_cocoa = {
--
2.29.2
- [PULL 0/8] Ui 20210219 patches, Gerd Hoffmann, 2021/02/19
- [PULL 3/8] ui/cocoa: Support unique keys of JIS keyboards, Gerd Hoffmann, 2021/02/19
- [PULL 4/8] ui/cocoa: Do not copy members of pixman image, Gerd Hoffmann, 2021/02/19
- [PULL 2/8] spice: flush drawing before notifying client, Gerd Hoffmann, 2021/02/19
- [PULL 7/8] ui/cocoa: Statically allocate dcl,
Gerd Hoffmann <=
- [PULL 8/8] ui/console: Remove dpy_gl_ctx_get_current, Gerd Hoffmann, 2021/02/19
- [PULL 6/8] ui/cocoa: Interpret left button down as is when command is pressed, Gerd Hoffmann, 2021/02/19
- [PULL 1/8] spice: flush on GL update before notifying client, Gerd Hoffmann, 2021/02/19
- [PULL 5/8] spice-app: avoid crash when core spice module doesn't loaded, Gerd Hoffmann, 2021/02/19
- Re: [PULL 0/8] Ui 20210219 patches, Peter Maydell, 2021/02/20