color-device: Don't attempt to set GAMMA_LUT if LUT size is zero

This might happen on e.g. virtual machines. If we don't skip trying,
we'll end up crashing because we'll fail to create a look up table since
the size must be greater than zero to make any sense.

Fixes: baef39e603
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2415
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2611>
This commit is contained in:
Jonas Ådahl 2022-09-03 15:01:40 +02:00 committed by Marge Bot
parent 1bd06e645e
commit 255cd9a9ff
2 changed files with 10 additions and 6 deletions

View File

@ -1171,7 +1171,6 @@ meta_color_device_update (MetaColorDevice *color_device,
MetaColorProfile *color_profile;
MetaMonitor *monitor;
size_t lut_size;
g_autoptr (MetaGammaLut) lut = NULL;
color_profile = meta_color_device_get_assigned_profile (color_device);
if (!color_profile)
@ -1206,11 +1205,16 @@ meta_color_device_update (MetaColorDevice *color_device,
}
lut_size = meta_monitor_get_gamma_lut_size (monitor);
lut = meta_color_profile_generate_gamma_lut (color_profile,
temperature,
lut_size);
if (lut_size > 0)
{
g_autoptr (MetaGammaLut) lut = NULL;
meta_monitor_set_gamma_lut (monitor, lut);
lut = meta_color_profile_generate_gamma_lut (color_profile,
temperature,
lut_size);
meta_monitor_set_gamma_lut (monitor, lut);
}
g_signal_emit (color_device, signals[UPDATED], 0);
}

View File

@ -488,7 +488,7 @@ meta_color_profile_generate_gamma_lut (MetaColorProfile *color_profile,
unsigned int temperature,
size_t lut_size)
{
g_return_val_if_fail (lut_size > 0, NULL);
g_assert (lut_size > 0);
if (color_profile->calibration->has_vcgt)
{