input-mapper: Don't match touchscreens to the absence of a monitor

If there is no laptop panel (for example on a desktop PC or a virtual
machine), attempting to put a NULL monitor in the list of matches
will just make mapping_helper_apply() crash.

Mitigates: https://gitlab.gnome.org/GNOME/mutter/-/issues/1414
Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
Simon McVittie 2020-09-09 10:15:32 +01:00 committed by Jonas Ådahl
parent af9df1e5b6
commit e74b065fb5

View File

@ -367,6 +367,8 @@ guess_candidates (MetaInputMapper *mapper,
MetaOutputMatchType edid_match; MetaOutputMatchType edid_match;
DeviceMatch match = { l->data, 0 }; DeviceMatch match = { l->data, 0 };
g_assert (META_IS_MONITOR (l->data));
if (match_edid (input, l->data, &edid_match)) if (match_edid (input, l->data, &edid_match))
match.score |= 1 << edid_match; match.score |= 1 << edid_match;
@ -386,7 +388,10 @@ guess_candidates (MetaInputMapper *mapper,
match.monitor = match.monitor =
meta_monitor_manager_get_laptop_panel (mapper->monitor_manager); meta_monitor_manager_get_laptop_panel (mapper->monitor_manager);
if (match.monitor != NULL)
g_array_append_val (info->matches, match); g_array_append_val (info->matches, match);
info->best = 0; info->best = 0;
} }
else else