X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fglxext.c;h=729ca5f073c60d8b3905335dc817697b5d01cc6d;hb=df0de9320684be29d45121a06de2fa64328eadaf;hp=8254544d1c01473e3cebfd129ee6400a0c9584ee;hpb=4683529048ee133481b2d8f1cae1685aa1736f9a;p=mesa.git diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 8254544d1c0..729ca5f073c 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -208,13 +208,13 @@ FreeScreenConfigs(struct glx_display * priv) if (psc->driScreen) { psc->driScreen->destroyScreen(psc); } else { - Xfree(psc); + free(psc); } #else - Xfree(psc); + free(psc); #endif } - XFree((char *) priv->screens); + free((char *) priv->screens); priv->screens = NULL; } @@ -230,10 +230,8 @@ glx_display_free(struct glx_display *priv) } FreeScreenConfigs(priv); - if (priv->serverGLXvendor) - Xfree((char *) priv->serverGLXvendor); - if (priv->serverGLXversion) - Xfree((char *) priv->serverGLXversion); + free((char *) priv->serverGLXvendor); + free((char *) priv->serverGLXversion); __glxHashDestroy(priv->glXDrawHash); @@ -254,7 +252,7 @@ glx_display_free(struct glx_display *priv) priv->dri2Display = NULL; #endif - Xfree((char *) priv); + free((char *) priv); } static int @@ -293,6 +291,9 @@ QueryVersion(Display * dpy, int opcode, int *major, int *minor) GLX_MINOR_VERSION), NULL); + if (!reply) + return GL_FALSE; + if (reply->major_version != GLX_MAJOR_VERSION) { free(reply); return GL_FALSE; @@ -611,7 +612,7 @@ createConfigsFromProperties(Display * dpy, int nvisuals, int nprops, if (prop_size <= sizeof(buf)) props = buf; else - props = Xmalloc(prop_size); + props = malloc(prop_size); /* Read each config structure and convert it into our format */ m = modes; @@ -635,7 +636,7 @@ createConfigsFromProperties(Display * dpy, int nvisuals, int nprops, } if (props != buf) - Xfree(props); + free(props); return modes; } @@ -737,15 +738,14 @@ glx_screen_cleanup(struct glx_screen *psc) { if (psc->configs) { glx_config_destroy_list(psc->configs); - if (psc->effectiveGLXexts) - Xfree(psc->effectiveGLXexts); + free(psc->effectiveGLXexts); psc->configs = NULL; /* NOTE: just for paranoia */ } if (psc->visuals) { glx_config_destroy_list(psc->visuals); psc->visuals = NULL; /* NOTE: just for paranoia */ } - Xfree((char *) psc->serverGLXexts); + free((char *) psc->serverGLXexts); } /* @@ -762,7 +762,7 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv) ** First allocate memory for the array of per screen configs. */ screens = ScreenCount(dpy); - priv->screens = Xmalloc(screens * sizeof *priv->screens); + priv->screens = malloc(screens * sizeof *priv->screens); if (!priv->screens) return GL_FALSE; @@ -820,13 +820,13 @@ __glXInitialize(Display * dpy) /* Drop the lock while we create the display private. */ _XUnlockMutex(_Xglobal_lock); - dpyPriv = Xcalloc(1, sizeof *dpyPriv); + dpyPriv = calloc(1, sizeof *dpyPriv); if (!dpyPriv) return NULL; dpyPriv->codes = XInitExtension(dpy, __glXExtensionName); if (!dpyPriv->codes) { - Xfree(dpyPriv); + free(dpyPriv); _XUnlockMutex(_Xglobal_lock); return NULL; } @@ -836,10 +836,13 @@ __glXInitialize(Display * dpy) dpyPriv->serverGLXvendor = 0x0; dpyPriv->serverGLXversion = 0x0; - /* See if the versions are compatible */ + /* See if the versions are compatible. This GLX implementation does not + * work with servers that only support GLX 1.0. + */ if (!QueryVersion(dpy, dpyPriv->majorOpcode, - &dpyPriv->majorVersion, &dpyPriv->minorVersion)) { - Xfree(dpyPriv); + &dpyPriv->majorVersion, &dpyPriv->minorVersion) + || (dpyPriv->majorVersion == 1 && dpyPriv->minorVersion < 1)) { + free(dpyPriv); _XUnlockMutex(_Xglobal_lock); return NULL; } @@ -875,17 +878,20 @@ __glXInitialize(Display * dpy) #ifdef GLX_USE_APPLEGL if (!applegl_create_display(dpyPriv)) { - Xfree(dpyPriv); + free(dpyPriv); return NULL; } #endif if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) { - Xfree(dpyPriv); + free(dpyPriv); return NULL; } - if (dpyPriv->majorVersion == 1 && dpyPriv->minorVersion >= 1) - __glXClientInfo(dpy, dpyPriv->majorOpcode); +#ifdef USE_XCB + __glX_send_client_info(dpyPriv); +#else + __glXClientInfo(dpy, dpyPriv->majorOpcode); +#endif /* Grab the lock again and add the dispay private, unless somebody * beat us to initializing on this display in the meantime. */