glx: Set an all NULL vtable for dummyContext
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 7 Sep 2010 18:32:28 +0000 (14:32 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 7 Sep 2010 18:32:28 +0000 (14:32 -0400)
This reverts 6a6e6d7b0a84e20f9754af02a575ae34081d310c and initializes
dummyContext with an all NULL vtable.  The context vtable pointer is
supposed to always be non-NULL, but the vtable entries can be NULL.

src/glx/glxclient.h
src/glx/glxcmds.c
src/glx/glxcurrent.c

index 813547ae51aa7e4a325697b274f92da66ab30dc3..b453e6dbd0404af4173fb0f1cb7df0df9a9e57a0 100644 (file)
@@ -260,6 +260,8 @@ struct glx_context
    GLint bufSize;
    /*@} */
 
+   const struct glx_context_vtable *vtable;
+
     /**
      * The XID of this rendering context.  When the context is created a
      * new XID is allocated.  This is set to None when the context is
@@ -423,8 +425,6 @@ struct glx_context
    unsigned long thread_id;
 
    char gl_extension_bits[__GL_EXT_BYTES];
-
-   const struct glx_context_vtable *vtable;
 };
 
 extern Bool
index 4bdb41d1b8c6f7e19663d3d586daaa447dbce59f..9575156080121b6fbc53c78cdd9564beba7c637d 100644 (file)
@@ -481,7 +481,7 @@ glXWaitGL(void)
 {
    struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc && gc->vtable && gc->vtable->wait_gl)
+   if (gc && gc->vtable->wait_gl)
       gc->vtable->wait_gl(gc);
 }
 
@@ -494,7 +494,7 @@ glXWaitX(void)
 {
    struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc && gc->vtable && gc->vtable->wait_x)
+   if (gc && gc->vtable->wait_x)
       gc->vtable->wait_x(gc);
 }
 
@@ -503,7 +503,7 @@ glXUseXFont(Font font, int first, int count, int listBase)
 {
    struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc && gc->vtable && gc->vtable->use_x_font)
+   if (gc && gc->vtable->use_x_font)
       gc->vtable->use_x_font(gc, font, first, count, listBase);
 }
 
@@ -2338,7 +2338,7 @@ __glXBindTexImageEXT(Display * dpy,
 {
    struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc == NULL || gc->vtable == NULL || gc->vtable->bind_tex_image == NULL)
+   if (gc == NULL || gc->vtable->bind_tex_image == NULL)
       return;
 
    gc->vtable->bind_tex_image(dpy, drawable, buffer, attrib_list);
@@ -2349,7 +2349,7 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
 {
    struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc == NULL || gc->vtable == NULL || gc->vtable->release_tex_image == NULL)
+   if (gc == NULL || gc->vtable->release_tex_image == NULL)
       return;
 
    gc->vtable->release_tex_image(dpy, drawable, buffer);
index e2569974c2f7933693cbe31ed82b57c59ef169b2..98f66c22898203f88009683c75e6f5c795e4c0a1 100644 (file)
@@ -53,7 +53,7 @@
 */
 
 static GLubyte dummyBuffer[__GLX_BUFFER_LIMIT_SIZE];
-
+static struct glx_context_vtable dummyVtable;
 /*
 ** Dummy context used by small commands when there is no current context.
 ** All the
@@ -66,6 +66,7 @@ struct glx_context dummyContext = {
    &dummyBuffer[0],
    &dummyBuffer[__GLX_BUFFER_LIMIT_SIZE],
    sizeof(dummyBuffer),
+   &dummyVtable
 };
 
 /*