So, we don't rely on the mode_output member. Signed-off-by: Daniel Martin <consume.no...@gmail.com> --- hw/xfree86/drivers/modesetting/drmmode_display.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index f17598c23..4e8b7e51b 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -1424,25 +1424,31 @@ static void drmmode_output_create_resources(xf86OutputPtr output) { drmmode_output_private_ptr drmmode_output = output->driver_private; - drmModeConnectorPtr mode_output = drmmode_output->mode_output; drmmode_ptr drmmode = drmmode_output->drmmode; + drmModeConnectorPtr koutput; drmModePropertyPtr drmmode_prop; int i, j, err; + /* Just need properties. drmModeGetConnectorCurrent() is sufficient. */ + koutput = drmModeGetConnectorCurrent(drmmode->fd, + drmmode_output->output_id); + if (!koutput) + return; + drmmode_output->props = - calloc(mode_output->count_props, sizeof(drmmode_prop_rec)); + calloc(koutput->count_props, sizeof(drmmode_prop_rec)); if (!drmmode_output->props) - return; + goto bail_out; drmmode_output->num_props = 0; - for (i = 0, j = 0; i < mode_output->count_props; i++) { - drmmode_prop = drmModeGetProperty(drmmode->fd, mode_output->props[i]); + for (i = 0, j = 0; i < koutput->count_props; i++) { + drmmode_prop = drmModeGetProperty(drmmode->fd, koutput->props[i]); if (drmmode_property_ignore(drmmode_prop)) { drmModeFreeProperty(drmmode_prop); continue; } drmmode_output->props[j].mode_prop = drmmode_prop; - drmmode_output->props[j].value = mode_output->prop_values[i]; + drmmode_output->props[j].value = koutput->prop_values[i]; drmmode_output->num_props++; j++; } @@ -1516,6 +1522,9 @@ drmmode_output_create_resources(xf86OutputPtr output) } } } + +bail_out: + drmModeFreeConnector(koutput); } static Bool -- 2.13.6 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel