Refactor drmmode_output_set_tear_free helper

Preparation for the following fix, no functional change intended.

(Ported from amdgpu commit fa30f4601de7a44edfb4a95873bd648946fd4292)
Acked-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Michel Dänzer
2018-07-10 18:53:54 +02:00
committed by Michel Dänzer
parent ee7e157461
commit f01d8cf2bd

View File

@@ -1743,6 +1743,22 @@ drmmode_output_create_resources(xf86OutputPtr output)
} }
} }
static void
drmmode_output_set_tear_free(RADEONEntPtr pRADEONEnt,
drmmode_output_private_ptr drmmode_output,
xf86CrtcPtr crtc, int tear_free)
{
if (drmmode_output->tear_free == tear_free)
return;
drmmode_output->tear_free = tear_free;
if (crtc) {
drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation,
crtc->x, crtc->y);
}
}
static Bool static Bool
drmmode_output_set_property(xf86OutputPtr output, Atom property, drmmode_output_set_property(xf86OutputPtr output, Atom property,
RRPropertyValuePtr value) RRPropertyValuePtr value)
@@ -1783,16 +1799,8 @@ drmmode_output_set_property(xf86OutputPtr output, Atom property,
for (j = 0; j < p->mode_prop->count_enums; j++) { for (j = 0; j < p->mode_prop->count_enums; j++) {
if (!strcmp(p->mode_prop->enums[j].name, name)) { if (!strcmp(p->mode_prop->enums[j].name, name)) {
if (i == (drmmode_output->num_props - 1)) { if (i == (drmmode_output->num_props - 1)) {
if (drmmode_output->tear_free != j) { drmmode_output_set_tear_free(pRADEONEnt, drmmode_output,
xf86CrtcPtr crtc = output->crtc; output->crtc, j);
drmmode_output->tear_free = j;
if (crtc) {
drmmode_set_mode_major(crtc, &crtc->mode,
crtc->rotation,
crtc->x, crtc->y);
}
}
} else { } else {
drmModeConnectorSetProperty(pRADEONEnt->fd, drmModeConnectorSetProperty(pRADEONEnt->fd,
drmmode_output->output_id, drmmode_output->output_id,