monitor-manager: Initialize MetaOutput even when we can't get the EDID
Otherwise we'll crash later when building a MetaConfiguration. https://bugzilla.gnome.org/show_bug.cgi?id=743412
This commit is contained in:
parent
3356a43c04
commit
ad90b7dd2f
@ -1230,6 +1230,9 @@ meta_output_parse_edid (MetaOutput *meta_output,
|
|||||||
MonitorInfo *parsed_edid;
|
MonitorInfo *parsed_edid;
|
||||||
gsize len;
|
gsize len;
|
||||||
|
|
||||||
|
if (!edid)
|
||||||
|
goto out;
|
||||||
|
|
||||||
parsed_edid = decode_edid (g_bytes_get_data (edid, &len));
|
parsed_edid = decode_edid (g_bytes_get_data (edid, &len));
|
||||||
|
|
||||||
if (parsed_edid)
|
if (parsed_edid)
|
||||||
@ -1247,6 +1250,7 @@ meta_output_parse_edid (MetaOutput *meta_output,
|
|||||||
g_free (parsed_edid);
|
g_free (parsed_edid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
if (!meta_output->vendor)
|
if (!meta_output->vendor)
|
||||||
{
|
{
|
||||||
meta_output->vendor = g_strdup ("unknown");
|
meta_output->vendor = g_strdup ("unknown");
|
||||||
|
@ -512,11 +512,8 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
|||||||
find_properties (manager_kms, output_kms);
|
find_properties (manager_kms, output_kms);
|
||||||
|
|
||||||
edid = read_output_edid (manager_kms, meta_output);
|
edid = read_output_edid (manager_kms, meta_output);
|
||||||
if (edid)
|
meta_output_parse_edid (meta_output, edid);
|
||||||
{
|
g_bytes_unref (edid);
|
||||||
meta_output_parse_edid (meta_output, edid);
|
|
||||||
g_bytes_unref (edid);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* MetaConnectorType matches DRM's connector types */
|
/* MetaConnectorType matches DRM's connector types */
|
||||||
meta_output->connector_type = (MetaConnectorType) connector->connector_type;
|
meta_output->connector_type = (MetaConnectorType) connector->connector_type;
|
||||||
|
@ -693,11 +693,8 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
meta_output->name = g_strdup (output->name);
|
meta_output->name = g_strdup (output->name);
|
||||||
|
|
||||||
edid = read_output_edid (manager_xrandr, meta_output->winsys_id);
|
edid = read_output_edid (manager_xrandr, meta_output->winsys_id);
|
||||||
if (edid)
|
meta_output_parse_edid (meta_output, edid);
|
||||||
{
|
g_bytes_unref (edid);
|
||||||
meta_output_parse_edid (meta_output, edid);
|
|
||||||
g_bytes_unref (edid);
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_output->width_mm = output->mm_width;
|
meta_output->width_mm = output->mm_width;
|
||||||
meta_output->height_mm = output->mm_height;
|
meta_output->height_mm = output->mm_height;
|
||||||
|
Loading…
Reference in New Issue
Block a user