diff options
author | Adam Jackson <ajax@redhat.com> | 2011-05-25 06:11:20 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2011-05-25 06:19:29 -0400 |
commit | a95ec18549b677b5e9912ca9e2c92df5cfef3b4e (patch) | |
tree | 236db9e4bcd7fe2c8b83d13ad69addf2e9b89d12 /src/glx | |
parent | c44dad559af88c40bb8e626fe293319966d14394 (diff) | |
download | external_mesa3d-a95ec18549b677b5e9912ca9e2c92df5cfef3b4e.zip external_mesa3d-a95ec18549b677b5e9912ca9e2c92df5cfef3b4e.tar.gz external_mesa3d-a95ec18549b677b5e9912ca9e2c92df5cfef3b4e.tar.bz2 |
glx: Don't refer to the request buffer outside of {L,Unl}ockDisplay
... because that's not a safe thing to do. The request buffer is shared
storage among all threads, and after UnlockDisplay the 'req' pointer may
point into someone else's request.
NOTE: This is a candidate for the 7.10 branch.
Signed-off-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'src/glx')
-rw-r--r-- | src/glx/glx_pbuffer.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index ad05d95..5c76c74 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -375,6 +375,7 @@ CreateDrawable(Display *dpy, struct glx_config *config, CARD32 *data; unsigned int i; CARD8 opcode; + GLXDrawable xid; i = 0; if (attrib_list) { @@ -395,7 +396,7 @@ CreateDrawable(Display *dpy, struct glx_config *config, req->screen = config->screen; req->fbconfig = config->fbconfigID; req->window = drawable; - req->glxwindow = XAllocID(dpy); + req->glxwindow = xid = XAllocID(dpy); req->numAttribs = i; if (attrib_list) @@ -404,9 +405,9 @@ CreateDrawable(Display *dpy, struct glx_config *config, UnlockDisplay(dpy); SyncHandle(); - CreateDRIDrawable(dpy, config, drawable, req->glxwindow, attrib_list, i); + CreateDRIDrawable(dpy, config, drawable, xid, attrib_list, i); - return req->glxwindow; + return xid; } |