rpms/xorg-x11-server/devel xserver-1.6.0-XATOM_FLOAT.patch, NONE, 1.1 xserver-1.6.0-XIPropToInt.patch, NONE, 1.1 xorg-x11-server.spec, 1.413, 1.414

Peter Hutterer whot at fedoraproject.org
Fri Feb 27 00:43:11 UTC 2009


Author: whot

Update of /cvs/pkgs/rpms/xorg-x11-server/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24302

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.6.0-XATOM_FLOAT.patch 
	xserver-1.6.0-XIPropToInt.patch 
Log Message:
* Fri Feb 27 2009 Peter Hutterer <peter.hutterer at redhat.com> 1.6.0-2
- xserver-1.6.0-XIPropToInt.patch: add XIPropToInt helper function
  (requirement for XATOM_FLOAT patch)
- xserver-1.6.0-XATOM_FLOAT.patch: add support for float properties.



xserver-1.6.0-XATOM_FLOAT.patch:

--- NEW FILE xserver-1.6.0-XATOM_FLOAT.patch ---
>From a48c81dcdf569a3f634ac23e08d2491354de6a36 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Fri, 5 Dec 2008 16:24:57 +1000
Subject: [PATCH] Xi: add XATOM_FLOAT to server-defined properties.

This property is used to denote type float for input properties. Such
properties can be accessed easily through the XIPropToFloat() function.

Code originally written by Simon Thum.

Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
---
 Xi/xiproperty.c              |   55 +++++++++++++++++++++++++++++++++++++++++-
 include/exevents.h           |    6 ++++
 include/xserver-properties.h |    4 +++
 3 files changed, 64 insertions(+), 1 deletions(-)

diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index cd9805a..6da8424 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -49,7 +49,8 @@ static struct dev_properties
     Atom type;
     char *name;
 } dev_properties[] = {
-    {0, XI_PROP_ENABLED}
+    {0, XI_PROP_ENABLED},
+    {0, XATOM_FLOAT}
 };
 
 static long XIPropHandlerID = 1;
@@ -137,6 +138,58 @@ XIPropToInt(XIPropertyValuePtr val, int *nelem_return, int **buf_return)
     return Success;
 }
 
+/**
+ * Convert the given property's value(s) into @nelem_return float values and
+ * store them in @buf_return. If @nelem_return is larger than the number of
+ * values in the property, @nelem_return is set to the number of values in the
+ * property.
+ *
+ * If *@buf_return is NULL and @nelem_return is 0, memory is allocated
+ * automatically and must be freed by the caller.
+ *
+ * Possible errors returned:
+ * Success
+ * BadMatch ... Wrong atom type, atom is not XA_FLOAT
+ * BadValue ... Wrong format, format is not 32
+ * BadAlloc ... NULL passed as buffer and allocation failed.
+ * BadLength ... @buff is NULL but @nelem_return is non-zero.
+ *
+ * @param val The property value
+ * @param nelem_return The maximum number of elements to return.
+ * @param buf_return Pointer to an array of at least @nelem_return values.
+ * @return Success or the error code if an error occured.
+ */
+_X_EXPORT int
+XIPropToFloat(XIPropertyValuePtr val, int *nelem_return, float **buf_return)
+{
+    int i;
+    float *buf;
+
+    if (!val->type || val->type != XIGetKnownProperty(XATOM_FLOAT))
+        return BadMatch;
+
+    if (val->format != 32)
+        return BadValue;
+    if (!*buf_return && *nelem_return)
+        return BadLength;
+
+    buf = *buf_return;
+
+    if (!buf && !(*nelem_return))
+    {
+        buf = xcalloc(val->size, sizeof(float));
+        if (!buf)
+            return BadAlloc;
+        *buf_return = buf;
+        *nelem_return = val->size;
+    } else if (val->size < *nelem_return)
+        *nelem_return = val->size;
+
+    for (i = 0; i < val->size && i < *nelem_return; i++)
+           buf[i] = ((float*)val->data)[i];
+
+    return Success;
+}
 
 /**
  * Init those properties that are allocated by the server and most likely used
diff --git a/include/exevents.h b/include/exevents.h
index 485347b..2504baf 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -257,4 +257,10 @@ extern _X_EXPORT int XIPropToInt(
         int **buf_return
 );
 
+extern _X_EXPORT int XIPropToFloat(
+        XIPropertyValuePtr val,
+        int *nelem_return,
+        float **buf_return
+);
+
 #endif /* EXEVENTS_H */
diff --git a/include/xserver-properties.h b/include/xserver-properties.h
index 4d602b5..f8aeab6 100644
--- a/include/xserver-properties.h
+++ b/include/xserver-properties.h
@@ -26,6 +26,10 @@
 #ifndef _XSERVER_PROPERTIES_H_
 #define _XSERVER_PROPERTIES_H_
 
+/* Type for a 4 byte float. Storage format IEEE 754 in client's default
+ * byte-ordering. */
+#define XATOM_FLOAT "FLOAT"
+
 /* BOOL. 0 - device disabled, 1 - device enabled */
 #define XI_PROP_ENABLED      "Device Enabled"
 
-- 
1.6.0.6


xserver-1.6.0-XIPropToInt.patch:

--- NEW FILE xserver-1.6.0-XIPropToInt.patch ---
>From 669f6810af9a89187d6149841925fe765f3988ff Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at redhat.com>
Date: Wed, 19 Nov 2008 15:50:57 +1000
Subject: [PATCH] Xi: add XIPropToInt() auxiliary function.

Converts an XIPropertyValuePtr to an integer, provided that type and format is
right.

Code originally written by Simon Thum.

Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
---
 Xi/xiproperty.c    |   68 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/exevents.h |    6 ++++
 2 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index e79a2ed..cd9805a 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -32,6 +32,7 @@
 #include "dix.h"
 #include "inputstr.h"
 #include <X11/extensions/XI.h>
+#include <X11/Xatom.h>
 #include <X11/extensions/XIproto.h>
 #include "exglobals.h"
 #include "exevents.h"
@@ -71,6 +72,73 @@ XIGetKnownProperty(char *name)
 }
 
 /**
+ * Convert the given property's value(s) into @nelem_return integer values and
+ * store them in @buf_return. If @nelem_return is larger than the number of
+ * values in the property, @nelem_return is set to the number of values in the
+ * property.
+ *
+ * If *@buf_return is NULL and @nelem_return is 0, memory is allocated
+ * automatically and must be freed by the caller.
+ *
+ * Possible return codes.
+ * Success ... No error.
+ * BadMatch ... Wrong atom type, atom is not XA_INTEGER
+ * BadAlloc ... NULL passed as buffer and allocation failed.
+ * BadLength ... @buff is NULL but @nelem_return is non-zero.
+ *
+ * @param val The property value
+ * @param nelem_return The maximum number of elements to return.
+ * @param buf_return Pointer to an array of at least @nelem_return values.
+ * @return Success or the error code if an error occured.
+ */
+_X_EXPORT int
+XIPropToInt(XIPropertyValuePtr val, int *nelem_return, int **buf_return)
+{
+    int i;
+    int *buf;
+
+    if (val->type != XA_INTEGER)
+        return BadMatch;
+    if (!*buf_return && *nelem_return)
+        return BadLength;
+
+    switch(val->format)
+    {
+        case 8:
+        case 16:
+        case 32:
+            break;
+        default:
+            return BadValue;
+    }
+
+    buf = *buf_return;
+
+    if (!buf && !(*nelem_return))
+    {
+        buf = xcalloc(val->size, sizeof(int));
+        if (!buf)
+            return BadAlloc;
+        *buf_return = buf;
+        *nelem_return = val->size;
+    } else if (val->size < *nelem_return)
+        *nelem_return = val->size;
+
+    for (i = 0; i < val->size && i < *nelem_return; i++)
+    {
+        switch(val->format)
+        {
+            case 8:  buf[i] = ((CARD8*)val->data)[i]; break;
+            case 16: buf[i] = ((CARD16*)val->data)[i]; break;
+            case 32: buf[i] = ((CARD32*)val->data)[i]; break;
+        }
+    }
+
+    return Success;
+}
+
+
+/**
  * Init those properties that are allocated by the server and most likely used
  * by the DIX or the DDX.
  */
diff --git a/include/exevents.h b/include/exevents.h
index 2a7ec97..485347b 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -251,4 +251,10 @@ extern _X_EXPORT Atom XIGetKnownProperty(
 
 extern DeviceIntPtr XIGetDevice(xEvent *ev);
 
+extern _X_EXPORT int XIPropToInt(
+        XIPropertyValuePtr val,
+        int *nelem_return,
+        int **buf_return
+);
+
 #endif /* EXEVENTS_H */
-- 
1.6.0.6



Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/devel/xorg-x11-server.spec,v
retrieving revision 1.413
retrieving revision 1.414
diff -u -r1.413 -r1.414
--- xorg-x11-server.spec	25 Feb 2009 20:38:47 -0000	1.413
+++ xorg-x11-server.spec	27 Feb 2009 00:42:40 -0000	1.414
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.6.0
-Release:   1%{?dist}
+Release:   2%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -91,6 +91,10 @@
 # Make autoconfiguration chose nouveau driver for NVIDIA GPUs
 Patch6017: xserver-1.5.99.902-nouveau.patch
 
+# from master, may end up in 1.6.1.
+Patch6018: xserver-1.6.0-XIPropToInt.patch
+Patch6019: xserver-1.6.0-XATOM_FLOAT.patch
+
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
 %define sdkdir		%{_includedir}/xorg
@@ -507,6 +511,11 @@
 
 
 %changelog
+* Fri Feb 27 2009 Peter Hutterer <peter.hutterer at redhat.com> 1.6.0-2
+- xserver-1.6.0-XIPropToInt.patch: add XIPropToInt helper function
+  (requirement for XATOM_FLOAT patch)
+- xserver-1.6.0-XATOM_FLOAT.patch: add support for float properties.
+
 * Wed Feb 25 2009 Adam Jackson <ajax at redhat.com> 1.6.0-1
 - xserver 1.6.0
 




More information about the scm-commits mailing list