From 6f6ac982951165a6ac77b3e32750c47780ea4990 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 8 Oct 2008 14:25:53 +1030 Subject: Add checkonly handling to property handlers. If checkonly is TRUE, we can only check if applying the value would succeed. The value is actually applied if checkonly is FALSE. --- src/evdev.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/evdev.c') diff --git a/src/evdev.c b/src/evdev.c index 1c2a559..97cc41c 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -108,7 +108,7 @@ static int EvdevCacheCompare(InputInfoPtr pInfo, Bool compare); #ifdef HAVE_PROPERTIES static void EvdevInitProperty(DeviceIntPtr dev); static int EvdevSetProperty(DeviceIntPtr dev, Atom atom, - XIPropertyValuePtr val); + XIPropertyValuePtr val, BOOL checkonly); static Atom prop_invert = 0; #endif @@ -1494,7 +1494,8 @@ EvdevInitProperty(DeviceIntPtr dev) } static int -EvdevSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val) +EvdevSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val, + BOOL checkonly) { InputInfoPtr pInfo = dev->public.devicePrivate; EvdevPtr pEvdev = pInfo->private; @@ -1504,9 +1505,13 @@ EvdevSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val) BOOL* data; if (val->format != 8 || val->size != 2 || val->type != XA_INTEGER) return BadMatch; - data = (BOOL*)val->data; - pEvdev->invert_x = data[0]; - pEvdev->invert_y = data[1]; + + if (!checkonly) + { + data = (BOOL*)val->data; + pEvdev->invert_x = data[0]; + pEvdev->invert_y = data[1]; + } } return Success; -- cgit v1.2.3