Add code to update the value of the RandR "Backlight" property based on the
KMS connector property of the same name if such a property is present. ok matthieu@
This commit is contained in:
parent
ea88c2222f
commit
11bfbfff1e
@ -1133,6 +1133,8 @@ drmmode_property_ignore(drmModePropertyPtr prop)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Atom backlight_atom;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
drmmode_output_create_resources(xf86OutputPtr output)
|
drmmode_output_create_resources(xf86OutputPtr output)
|
||||||
{
|
{
|
||||||
@ -1229,6 +1231,9 @@ drmmode_output_create_resources(xf86OutputPtr output)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backlight_atom = MakeAtom(RR_PROPERTY_BACKLIGHT,
|
||||||
|
strlen(RR_PROPERTY_BACKLIGHT), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
@ -1287,7 +1292,48 @@ drmmode_output_set_property(xf86OutputPtr output, Atom property,
|
|||||||
static Bool
|
static Bool
|
||||||
drmmode_output_get_property(xf86OutputPtr output, Atom property)
|
drmmode_output_get_property(xf86OutputPtr output, Atom property)
|
||||||
{
|
{
|
||||||
return TRUE;
|
drmmode_output_private_ptr drmmode_output = output->driver_private;
|
||||||
|
drmmode_ptr drmmode = drmmode_output->drmmode;
|
||||||
|
drmModeObjectPropertiesPtr props;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (property != backlight_atom)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
props = drmModeObjectGetProperties(drmmode->fd, drmmode_output->output_id,
|
||||||
|
DRM_MODE_OBJECT_CONNECTOR);
|
||||||
|
if (!props)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < drmmode_output->num_props; i++) {
|
||||||
|
drmmode_prop_ptr p = &drmmode_output->props[i];
|
||||||
|
int j;
|
||||||
|
|
||||||
|
if (p->atoms[0] != property)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < props->count_props; j++) {
|
||||||
|
if (props->props[j] == p->mode_prop->prop_id) {
|
||||||
|
INT32 value;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
value = p->value = props->prop_values[j];
|
||||||
|
err = RRChangeOutputProperty(output->randr_output, p->atoms[0],
|
||||||
|
XA_INTEGER, 32, PropModeReplace, 1,
|
||||||
|
&value, FALSE, TRUE);
|
||||||
|
if (err != 0) {
|
||||||
|
xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
|
||||||
|
"RRChangeOutputProperty error, %d\n", err);
|
||||||
|
}
|
||||||
|
|
||||||
|
drmModeFreeObjectProperties(props);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
drmModeFreeObjectProperties(props);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const xf86OutputFuncsRec drmmode_output_funcs = {
|
static const xf86OutputFuncsRec drmmode_output_funcs = {
|
||||||
|
Loading…
Reference in New Issue
Block a user