diff mbox

Add get_property support.

Message ID 1250615246-26111-3-git-send-email-mhopf@suse.de (mailing list archive)
State Not Applicable
Headers show

Commit Message

Matthias Hopf Aug. 18, 2009, 5:07 p.m. UTC
So far only BACKLIGHT is changed.
---
 src/drmmode_display.c |   36 ++++++++++++++++++++++++++++++++----
 1 files changed, 32 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 64b28ef..ab73b4f 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1048,10 +1048,7 @@  drmmode_output_create_resources(xf86OutputPtr output)
     if (drmmode_output->backlight_iface) {
 	INT32 data, backlight_range[2];
 	/* Set up the backlight property, which takes effect immediately
-	 * and accepts values only within the backlight_range.
-	 *
-	 * FIXME: there is no get_property yet.
-	 */
+	 * and accepts values only within the backlight_range. */
 	backlight_atom = MakeAtom(BACKLIGHT_NAME, sizeof(BACKLIGHT_NAME) - 1,
 	    TRUE);
 
@@ -1143,10 +1140,41 @@  drmmode_output_set_property(xf86OutputPtr output, Atom property,
     return TRUE;
 }
 
+static Bool
+drmmode_output_get_property(xf86OutputPtr output, Atom property)
+{
+    drmmode_output_private_ptr drmmode_output = output->driver_private;
+    int err;
+
+    if (property == backlight_atom) {
+	INT32 val;
+
+	if (! drmmode_output->backlight_iface)
+	    return FALSE;
+
+	val = drmmode_backlight_get(output);
+	if (val < 0)
+	    return FALSE;
+	err = RRChangeOutputProperty(output->randr_output, backlight_atom,
+	                             XA_INTEGER, 32, PropModeReplace, 1, &val,
+	                             FALSE, TRUE);
+	if (err != 0) {
+	    xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
+	               "RRChangeOutputProperty error, %d\n", err);
+	    return FALSE;
+	}
+
+	return TRUE;
+    }
+
+    return TRUE;
+}
+
 static const xf86OutputFuncsRec drmmode_output_funcs = {
 	.create_resources = drmmode_output_create_resources,
 #ifdef RANDR_12_INTERFACE
 	.set_property = drmmode_output_set_property,
+	.get_property = drmmode_output_get_property,
 #endif
 	.dpms = drmmode_output_dpms,
 #if 0