mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 01:34:11 +00:00
1
This commit is contained in:
@@ -557,10 +557,10 @@ XICreateDeviceProperty(Atom property)
|
||||
|
||||
prop->next = NULL;
|
||||
prop->propertyName = property;
|
||||
prop->value.type = None;
|
||||
prop->value.format = 0;
|
||||
prop->value.size = 0;
|
||||
prop->value.data = NULL;
|
||||
prop->type = None;
|
||||
prop->format = 0;
|
||||
prop->size = 0;
|
||||
prop->data = NULL;
|
||||
prop->deletable = TRUE;
|
||||
|
||||
return prop;
|
||||
@@ -580,7 +580,7 @@ XIFetchDeviceProperty(DeviceIntPtr dev, Atom property)
|
||||
static void
|
||||
XIDestroyDeviceProperty(XIPropertyPtr prop)
|
||||
{
|
||||
free(prop->value.data);
|
||||
free(prop->data);
|
||||
free(prop);
|
||||
}
|
||||
|
||||
@@ -662,8 +662,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||
XIPropertyPtr prop;
|
||||
int size_in_bytes;
|
||||
unsigned long total_len;
|
||||
XIPropertyValuePtr prop_value;
|
||||
XIPropertyValueRec new_value;
|
||||
XIPropertyPtr prop_value;
|
||||
Bool add = FALSE;
|
||||
int rc;
|
||||
|
||||
@@ -678,7 +677,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||
add = TRUE;
|
||||
mode = PropModeReplace;
|
||||
}
|
||||
prop_value = &prop->value;
|
||||
prop_value = prop;
|
||||
|
||||
/* To append or prepend to a property the request format and type
|
||||
must match those of the already defined property. The
|
||||
@@ -689,7 +688,8 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||
return BadMatch;
|
||||
if ((prop_value->type != type) && (mode != PropModeReplace))
|
||||
return BadMatch;
|
||||
new_value = *prop_value;
|
||||
|
||||
XIPropertyRec new_value = *prop_value;
|
||||
if (mode == PropModeReplace)
|
||||
total_len = len;
|
||||
else
|
||||
@@ -758,6 +758,11 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||
} while (!checkonly);
|
||||
}
|
||||
free(prop_value->data);
|
||||
prop_value.type = new_value.type;
|
||||
prop_value.format = new_value.format;
|
||||
prop_value.data = new_value.data;
|
||||
prop_value.size = new_value.size;
|
||||
|
||||
*prop_value = new_value;
|
||||
}
|
||||
else if (len == 0) {
|
||||
@@ -805,7 +810,7 @@ XIGetDeviceProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr *value)
|
||||
}
|
||||
}
|
||||
|
||||
*value = &prop->value;
|
||||
*value = prop;
|
||||
return Success;
|
||||
}
|
||||
|
||||
|
||||
@@ -457,17 +457,12 @@ typedef struct _XIPropertyValue {
|
||||
short format; /* format of data for swapping - 8,16,32 */
|
||||
long size; /* size of data in (format/8) bytes */
|
||||
void *data; /* private to client */
|
||||
} XIPropertyValueRec;
|
||||
|
||||
typedef struct _XIProperty {
|
||||
struct _XIProperty *next;
|
||||
// not supposed to be touched by drivers
|
||||
struct _XIPropertyValue *next;
|
||||
Atom propertyName;
|
||||
BOOL deletable; /* clients can delete this prop? */
|
||||
XIPropertyValueRec value;
|
||||
} XIPropertyRec;
|
||||
|
||||
typedef XIPropertyRec *XIPropertyPtr;
|
||||
typedef XIPropertyValueRec *XIPropertyValuePtr;
|
||||
Bool deletable; /* clients can delete this prop? */
|
||||
} XIPropertyRec, *XIPropertyPtr, *XIPropertyValuePtr;
|
||||
|
||||
typedef struct _XIPropertyHandler {
|
||||
struct _XIPropertyHandler *next;
|
||||
|
||||
Reference in New Issue
Block a user