aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix/dispatch.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-09-06 12:06:57 +0200
committermarha <marha@users.sourceforge.net>2013-09-06 12:06:57 +0200
commit2414a1de3cc17f438219f8f2a58b530d33e99a5e (patch)
treea7d7ca359bf84115689b071d30dfae0887efc057 /xorg-server/dix/dispatch.c
parentb828531d8b6da75a258d12f97df0f4e49f75ab98 (diff)
downloadvcxsrv-2414a1de3cc17f438219f8f2a58b530d33e99a5e.tar.gz
vcxsrv-2414a1de3cc17f438219f8f2a58b530d33e99a5e.tar.bz2
vcxsrv-2414a1de3cc17f438219f8f2a58b530d33e99a5e.zip
mesa pixman xserver xkeyboard-config
xserver commit 6f89ae3e64c4dfeea508813e546c10ba1da3ea8e xkeyboard-config commit c2309b50e7ef7b9263278fd8ff73dda1484d72db pixman commit 8ad63f90cd8392a40f115c56b16c54d45012070e mesa commit 505fad04f10eee1efdfcd8986b4d484b49d39986
Diffstat (limited to 'xorg-server/dix/dispatch.c')
-rw-r--r--xorg-server/dix/dispatch.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c
index 51d0de25f..71fda4893 100644
--- a/xorg-server/dix/dispatch.c
+++ b/xorg-server/dix/dispatch.c
@@ -2864,18 +2864,25 @@ ProcCreateCursor(ClientPtr client)
return rc;
}
- rc = dixLookupResourceByType((pointer *) &msk, stuff->mask, RT_PIXMAP,
- client, DixReadAccess);
- if (rc != Success) {
- if (stuff->mask != None) {
+ if (src->drawable.depth != 1)
+ return (BadMatch);
+
+ /* Find and validate cursor mask pixmap, if one is provided */
+ if (stuff->mask != None) {
+ rc = dixLookupResourceByType((pointer *) &msk, stuff->mask, RT_PIXMAP,
+ client, DixReadAccess);
+ if (rc != Success) {
client->errorValue = stuff->mask;
return rc;
}
+
+ if (src->drawable.width != msk->drawable.width
+ || src->drawable.height != msk->drawable.height
+ || src->drawable.depth != 1 || msk->drawable.depth != 1)
+ return BadMatch;
}
- else if (src->drawable.width != msk->drawable.width
- || src->drawable.height != msk->drawable.height
- || src->drawable.depth != 1 || msk->drawable.depth != 1)
- return BadMatch;
+ else
+ msk = NULL;
width = src->drawable.width;
height = src->drawable.height;