glx: no graphics context during initialization
authorRALOVICH, Kristóf <tade60@freemail.hu>
Tue, 4 Nov 2008 10:31:53 +0000 (11:31 +0100)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 26 Nov 2008 17:02:11 +0000 (10:02 -0700)
src/glx/x11/glx_query.c
src/glx/x11/glxclient.h
src/glx/x11/glxcmds.c
src/glx/x11/glxext.c
src/glx/x11/single2.c

index 01911e2a3a91f323cd567ac2eb4c4469a899c288..2789b841b1b7f41df6e4be698e606be8ec255857 100644 (file)
@@ -44,6 +44,7 @@
  */
 char *
 __glXQueryServerString(Display* dpy,
+                       int opcode,
                        CARD32 screen,
                        CARD32 name)
 {
@@ -70,6 +71,7 @@ __glXQueryServerString(Display* dpy,
  */
 char *
 __glXGetString(Display* dpy,
+               int opcode,
                CARD32 contextTag,
                CARD32 name)
 {
@@ -166,22 +168,22 @@ __glXGetStringFromServer(Display * dpy, int opcode, CARD32 glxCode,
 
 char *
 __glXQueryServerString(Display* dpy,
+                       int opcode,
                        CARD32 screen,
                        CARD32 name)
 {
-   GLXContext gc = __glXGetCurrentContext();
-   return __glXGetStringFromServer(dpy, gc->majorOpcode,
+   return __glXGetStringFromServer(dpy, opcode,
                                    X_GLXQueryServerString,
                                    screen, name);
 }
 
 char *
 __glXGetString(Display* dpy,
+               int opcode,
                CARD32 contextTag,
                CARD32 name)
 {
-   GLXContext gc = __glXGetCurrentContext();
-   return __glXGetStringFromServer(dpy, gc->majorOpcode, X_GLsop_GetString,
+   return __glXGetStringFromServer(dpy, opcode, X_GLsop_GetString,
                                    contextTag, name);
 }
 
index 361ab70841c538ea4dd4b5d7ae730cec73f0d23e..16f6074ed89a2addc9da9d59d74dc17f16a6929a 100644 (file)
@@ -739,8 +739,10 @@ extern void _XSend(Display*, const void*, long);
 extern void __glXInitializeVisualConfigFromTags( __GLcontextModes *config,
     int count, const INT32 *bp, Bool tagged_only, Bool fbconfig_style_tags );
 
-extern char * __glXQueryServerString(Display* dpy, CARD32 screen, CARD32 name);
-extern char * __glXGetString(Display* dpy, CARD32 screen, CARD32 name);
+extern char * __glXQueryServerString(Display* dpy, int opcode,
+                                     CARD32 screen, CARD32 name);
+extern char * __glXGetString(Display* dpy, int opcode,
+                             CARD32 screen, CARD32 name);
 
 extern char *__glXstrdup(const char *str);
 
index 18bf12084b452ba48ad4f44ccadc9dc9e98500fc..0bb548f776d025e357ef3a5d935cf20a3a83e136 100644 (file)
@@ -1336,7 +1336,7 @@ PUBLIC const char *glXQueryExtensionsString( Display *dpy, int screen )
     if (!psc->effectiveGLXexts) {
         if (!psc->serverGLXexts) {
            psc->serverGLXexts =
-              __glXQueryServerString(dpy, screen, GLX_EXTENSIONS);
+              __glXQueryServerString(dpy, priv->majorOpcode, screen, GLX_EXTENSIONS);
        }
 
        __glXCalculateUsableExtensions(psc,
@@ -1391,7 +1391,7 @@ PUBLIC const char *glXQueryServerString( Display *dpy, int screen, int name )
     }
 
     if ( *str == NULL ) {
-       *str = __glXQueryServerString(dpy, screen, name);
+       *str = __glXQueryServerString(dpy, priv->majorOpcode, screen, name);
     }
     
     return *str;
index 85a3fc69f39380257ea055d67afb1e52101f8bc4..be6edf9b19317ebf70bc9d07780ce1c080c13136 100644 (file)
@@ -550,7 +550,7 @@ getFBConfigs(Display * dpy, __GLXdisplayPrivate * priv, int screen)
    __GLXscreenConfigs *psc;
 
    psc = priv->screenConfigs + screen;
-   psc->serverGLXexts = __glXQueryServerString(dpy, screen, GLX_EXTENSIONS);
+   psc->serverGLXexts = __glXQueryServerString(dpy, priv->majorOpcode, screen, GLX_EXTENSIONS);
 
    LockDisplay(dpy);
 
@@ -608,7 +608,7 @@ AllocAndFetchScreenConfigs(Display * dpy, __GLXdisplayPrivate * priv)
    memset(psc, 0, screens * sizeof(__GLXscreenConfigs));
    priv->screenConfigs = psc;
 
-   priv->serverGLXversion = __glXQueryServerString(dpy, 0, GLX_VERSION);
+   priv->serverGLXversion = __glXQueryServerString(dpy, priv->majorOpcode, 0, GLX_VERSION);
    if (priv->serverGLXversion == NULL) {
       FreeScreenConfigs(priv);
       return GL_FALSE;
index 4375cb31260d21ee0f30681a3138baba7bebd6a4..0b2d5113cc8eb605108e03d0e43dd329b47485d4 100644 (file)
@@ -679,7 +679,7 @@ __indirect_glGetString(GLenum name)
     */
 
    (void) __glXFlushRenderBuffer(gc, gc->pc);
-   s = (GLubyte *) __glXGetString(dpy, gc->currentContextTag, name);
+   s = (GLubyte *) __glXGetString(dpy, gc->majorOpcode, gc->currentContextTag, name);
    if (!s) {
       /* Throw data on the floor */
       __glXSetError(gc, GL_OUT_OF_MEMORY);