shell: Do not use stack-allocated ClutterEvents

All events should be allocated.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1451
This commit is contained in:
Carlos Garnacho 2020-09-24 18:19:44 +02:00
parent a9e5004eab
commit daa3ddac94

View File

@ -1381,31 +1381,32 @@ shell_global_sync_pointer (ShellGlobal *global)
{ {
int x, y; int x, y;
ClutterModifierType mods; ClutterModifierType mods;
ClutterMotionEvent event; ClutterEvent *event;
ClutterSeat *seat; ClutterSeat *seat;
shell_global_get_pointer (global, &x, &y, &mods); shell_global_get_pointer (global, &x, &y, &mods);
seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
event = clutter_event_new (CLUTTER_MOTION);
event.type = CLUTTER_MOTION; event->motion.time = shell_global_get_current_time (global);
event.time = shell_global_get_current_time (global); event->motion.flags = CLUTTER_EVENT_FLAG_SYNTHETIC;
event.flags = CLUTTER_EVENT_FLAG_SYNTHETIC; event->motion.stage = global->stage;
event.stage = global->stage; event->motion.x = x;
event.x = x; event->motion.y = y;
event.y = y; event->motion.modifier_state = mods;
event.modifier_state = mods; event->motion.axes = NULL;
event.axes = NULL; clutter_event_set_device (event, clutter_seat_get_pointer (seat));
event.device = clutter_seat_get_pointer (seat);
/* Leaving event.source NULL will force clutter to look it up, which /* Leaving event.source NULL will force clutter to look it up, which
* will generate enter/leave events as a side effect, if they are * will generate enter/leave events as a side effect, if they are
* needed. We need a better way to do this though... see * needed. We need a better way to do this though... see
* http://bugzilla.clutter-project.org/show_bug.cgi?id=2615. * http://bugzilla.clutter-project.org/show_bug.cgi?id=2615.
*/ */
event.source = NULL; clutter_event_set_source_device (event, NULL);
clutter_event_put ((ClutterEvent *)&event); clutter_event_put (event);
clutter_event_free (event);
} }
/** /**