glx: Move vertex array protocol state into the indirect backend
Only relevant for indirect contexts, so let's get that code out of the common path.
This commit is contained in:
@@ -245,18 +245,6 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
|
||||
|
||||
__glXUnlock();
|
||||
|
||||
/* The indirect vertex array state must to be initialised after we
|
||||
* have setup the context, as it needs to query server attributes.
|
||||
*/
|
||||
if (gc && !gc->isDirect) {
|
||||
__GLXattribute *state = gc->client_state_private;
|
||||
if (state && state->array_state == NULL) {
|
||||
glGetString(GL_EXTENSIONS);
|
||||
glGetString(GL_VERSION);
|
||||
__glXInitVertexArrayState(gc);
|
||||
}
|
||||
}
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
+22
-4
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "glapi.h"
|
||||
#include "glxclient.h"
|
||||
|
||||
#include "indirect.h"
|
||||
#include "util/debug.h"
|
||||
|
||||
#ifndef GLX_USE_APPLEGL
|
||||
@@ -148,9 +148,27 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old,
|
||||
sent = SendMakeCurrentRequest(dpy, gc->xid, tag, draw, read,
|
||||
&gc->currentContextTag);
|
||||
|
||||
if (!IndirectAPI)
|
||||
IndirectAPI = __glXNewIndirectAPI();
|
||||
_glapi_set_dispatch(IndirectAPI);
|
||||
if (sent) {
|
||||
if (!IndirectAPI)
|
||||
IndirectAPI = __glXNewIndirectAPI();
|
||||
_glapi_set_dispatch(IndirectAPI);
|
||||
|
||||
/* The indirect vertex array state must to be initialised after we
|
||||
* have setup the context, as it needs to query server attributes.
|
||||
*
|
||||
* At the point this is called gc->currentDpy is not initialized
|
||||
* nor is the thread's current context actually set. Hence the
|
||||
* cleverness before the GetString calls.
|
||||
*/
|
||||
__GLXattribute *state = gc->client_state_private;
|
||||
if (state && state->array_state == NULL) {
|
||||
gc->currentDpy = gc->psc->dpy;
|
||||
__glXSetCurrentContext(gc);
|
||||
__indirect_glGetString(GL_EXTENSIONS);
|
||||
__indirect_glGetString(GL_VERSION);
|
||||
__glXInitVertexArrayState(gc);
|
||||
}
|
||||
}
|
||||
|
||||
return !sent;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user