wayland: Warn and fix accounting on missed CLUTTER_TOUCH_END events
If we happen to handle a CLUTTER_TOUCH_BEGIN without a corresponding CLUTTER_TOUCH_END at MetaWaylandTouch, we would still attempt to reuse the older MetaWaylandTouchInfo, resulting in an assert triggered as there is a stale touch reference on the previous surface. Warn in place and create a new touch info struct to still fix the broken surface accounting, instead of finding out the hard way after the surface is destroyed. The assert is preserved to ensure the accounting does not sneakily break anymore/further. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/584 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2251>
This commit is contained in:
parent
b7f7b82b89
commit
7bf10de538
@ -177,8 +177,11 @@ touch_get_info (MetaWaylandTouch *touch,
|
||||
|
||||
touch_info = g_hash_table_lookup (touch->touches, sequence);
|
||||
|
||||
if (!touch_info && create)
|
||||
if (create)
|
||||
{
|
||||
if (touch_info != NULL)
|
||||
g_warning ("Stale touch information for sequence slot %p", sequence);
|
||||
|
||||
touch_info = g_new0 (MetaWaylandTouchInfo, 1);
|
||||
touch_info->slot = clutter_event_sequence_get_slot (sequence);
|
||||
g_hash_table_insert (touch->touches, sequence, touch_info);
|
||||
|
Loading…
Reference in New Issue
Block a user