aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix/dixutils.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-01-11 08:18:52 +0100
committermarha <marha@users.sourceforge.net>2012-01-11 08:18:52 +0100
commit38e661c7d82fa0b34fbe9b3f3261295787bb6427 (patch)
treeef71c86cfe741318555e06dec3e9e2817d731e7a /xorg-server/dix/dixutils.c
parenta1e97828c89278770cb249039ec92d959440c640 (diff)
downloadvcxsrv-38e661c7d82fa0b34fbe9b3f3261295787bb6427.tar.gz
vcxsrv-38e661c7d82fa0b34fbe9b3f3261295787bb6427.tar.bz2
vcxsrv-38e661c7d82fa0b34fbe9b3f3261295787bb6427.zip
mesa pixman xserver git update 11 jan 2012
Diffstat (limited to 'xorg-server/dix/dixutils.c')
-rw-r--r--xorg-server/dix/dixutils.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/xorg-server/dix/dixutils.c b/xorg-server/dix/dixutils.c
index 00bbde67c..da26dc144 100644
--- a/xorg-server/dix/dixutils.c
+++ b/xorg-server/dix/dixutils.c
@@ -202,13 +202,12 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
int rc;
*pDraw = NULL;
- client->errorValue = id;
-
- if (id == INVALID)
- return BadDrawable;
rc = dixLookupResourceByClass((pointer *)&pTmp, id, RC_DRAWABLE, client, access);
+ if (rc != Success)
+ client->errorValue = id;
+
if (rc == BadValue)
return BadDrawable;
if (rc != Success)
@@ -225,7 +224,15 @@ dixLookupWindow(WindowPtr *pWin, XID id, ClientPtr client, Mask access)
{
int rc;
rc = dixLookupDrawable((DrawablePtr*)pWin, id, client, M_WINDOW, access);
- return (rc == BadDrawable) ? BadWindow : rc;
+ /* dixLookupDrawable returns BadMatch iff id is a valid Drawable
+ but is not a Window. Users of dixLookupWindow expect a BadWindow
+ error in this case; they don't care that it's a valid non-Window XID */
+ if (rc == BadMatch)
+ rc = BadWindow;
+ /* Similarly, users of dixLookupWindow don't want BadDrawable. */
+ if (rc == BadDrawable)
+ rc = BadWindow;
+ return rc;
}
int