diff options
author | Adam Jackson <ajax@redhat.com> | 2011-12-13 21:23:12 -0500 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2012-01-18 11:37:52 -0800 |
commit | b3d380f18559ec423130a20244c108b17b4753ef (patch) | |
tree | f28b3257fc9a3ab13eea6272e2279ef84fc3dca1 | |
parent | 800e2d1e724cbf4bbb1ab0b487c681ffce9a93f2 (diff) |
dix: Tune dixLookupDrawable for success
The vast vast vast majority of resource lookups are successful. Move some
work to the error paths so we don't punish success.
Before:
40000000 trep @ 0.0009 msec (1109091.3/sec): PutImage 10x10 square
60000000 trep @ 0.0005 msec (2072652.2/sec): ShmPutImage 10x10 square
After:
40000000 trep @ 0.0009 msec (1148346.9/sec): PutImage 10x10 square
60000000 trep @ 0.0005 msec (2091666.1/sec): ShmPutImage 10x10 square
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit 8f9bdfd293ad8e45755efe8d764b4dcc2a724f51)
-rw-r--r-- | dix/dixutils.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/dix/dixutils.c b/dix/dixutils.c index 104363b72..7f1681116 100644 --- a/dix/dixutils.c +++ b/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) |