mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -05:00
c41657bc4f
When an activation times out, we'll be signalled two signals on the startup sequence object: "timeout", and "complete". Normally, the "complete" signal is emitted when a startup sequence is completed succesfully by it being used for activation, and in this case, the xdg_activation implementation should remove the sequence from the startup notification machinery. However, in the timeout case, we should not remove it, as the startup notification machinery itself will deal with this. If we would, we'd end up with use-after-free issues, as the sequence would be finalized when removed the first time. To avoid this, just clean up the Wayland side in the "timeout" signal handler, leaving the "complete" signal handler early out if it was already handled by it. This avoids crashes like: 0) g_type_check_instance (type_instance=type_instance@entry=0xdd6740) 1) g_signal_handlers_disconnect_matched (instance=0xdd6740, ...) 2) meta_startup_notification_remove_sequence (sn=0x4cc890, seq=0xdd6740) at ../src/core/startup-notification.c:544 3) startup_sequence_timeout (data=0x4cc890, ...) at ../src/core/startup-notification.c:504 4) g_timeout_dispatch (...) at ../glib/gmain.c:4933 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2081> |
||
---|---|---|
.. | ||
backends | ||
compositor | ||
core | ||
meta | ||
tests | ||
ui | ||
wayland | ||
x11 | ||
libmutter.pc.in | ||
meson.build | ||
meta-private-enum-types.c.in | ||
meta-private-enum-types.h.in | ||
org.freedesktop.login1.xml | ||
org.freedesktop.RealtimeKit1.xml | ||
org.gnome.Mutter.DisplayConfig.xml | ||
org.gnome.Mutter.IdleMonitor.xml | ||
org.gnome.Mutter.RemoteDesktop.xml | ||
org.gnome.Mutter.ScreenCast.xml |