projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
glapi: Do not use backtrace on Cygwin.
[mesa.git]
/
src
/
glx
/
glxext.c
diff --git
a/src/glx/glxext.c
b/src/glx/glxext.c
index 8704c484f9687bd69b59e7f7683b0ac7b4893f43..729ca5f073c60d8b3905335dc817697b5d01cc6d 100644
(file)
--- 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 {
if (psc->driScreen) {
psc->driScreen->destroyScreen(psc);
} else {
-
X
free(psc);
+ free(psc);
}
#else
}
#else
-
X
free(psc);
+ free(psc);
#endif
}
#endif
}
-
XF
ree((char *) priv->screens);
+
f
ree((char *) priv->screens);
priv->screens = NULL;
}
priv->screens = NULL;
}
@@
-230,10
+230,8
@@
glx_display_free(struct glx_display *priv)
}
FreeScreenConfigs(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);
__glxHashDestroy(priv->glXDrawHash);
@@
-254,30
+252,25
@@
glx_display_free(struct glx_display *priv)
priv->dri2Display = NULL;
#endif
priv->dri2Display = NULL;
#endif
-
X
free((char *) priv);
+ free((char *) priv);
}
static int
__glXCloseDisplay(Display * dpy, XExtCodes * codes)
{
}
static int
__glXCloseDisplay(Display * dpy, XExtCodes * codes)
{
- struct glx_display *priv, **prev
, *next
;
+ struct glx_display *priv, **prev;
_XLockMutex(_Xglobal_lock);
prev = &glx_displays;
for (priv = glx_displays; priv; prev = &priv->next, priv = priv->next) {
if (priv->dpy == dpy) {
_XLockMutex(_Xglobal_lock);
prev = &glx_displays;
for (priv = glx_displays; priv; prev = &priv->next, priv = priv->next) {
if (priv->dpy == dpy) {
+ *prev = priv->next;
break;
}
}
break;
}
}
+ _XUnlockMutex(_Xglobal_lock);
- /* Only remove the display from the list after it's destroyed. The cleanup
- * code (e.g. driReleaseDrawables()) ends up calling __glXInitialize(),
- * which would create a new glx_display while we're trying to destroy this
- * one. */
- next = priv->next;
glx_display_free(priv);
glx_display_free(priv);
- *prev = next;
- _XUnlockMutex(_Xglobal_lock);
return 1;
}
return 1;
}
@@
-298,6
+291,9
@@
QueryVersion(Display * dpy, int opcode, int *major, int *minor)
GLX_MINOR_VERSION),
NULL);
GLX_MINOR_VERSION),
NULL);
+ if (!reply)
+ return GL_FALSE;
+
if (reply->major_version != GLX_MAJOR_VERSION) {
free(reply);
return GL_FALSE;
if (reply->major_version != GLX_MAJOR_VERSION) {
free(reply);
return GL_FALSE;
@@
-616,7
+612,7
@@
createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
if (prop_size <= sizeof(buf))
props = buf;
else
if (prop_size <= sizeof(buf))
props = buf;
else
- props =
X
malloc(prop_size);
+ props = malloc(prop_size);
/* Read each config structure and convert it into our format */
m = modes;
/* Read each config structure and convert it into our format */
m = modes;
@@
-640,7
+636,7
@@
createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
}
if (props != buf)
}
if (props != buf)
-
X
free(props);
+ free(props);
return modes;
}
return modes;
}
@@
-742,15
+738,14
@@
glx_screen_cleanup(struct glx_screen *psc)
{
if (psc->configs) {
glx_config_destroy_list(psc->configs);
{
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 */
}
psc->configs = NULL; /* NOTE: just for paranoia */
}
if (psc->visuals) {
glx_config_destroy_list(psc->visuals);
psc->visuals = NULL; /* NOTE: just for paranoia */
}
-
X
free((char *) psc->serverGLXexts);
+ free((char *) psc->serverGLXexts);
}
/*
}
/*
@@
-767,7
+762,7
@@
AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv)
** First allocate memory for the array of per screen configs.
*/
screens = ScreenCount(dpy);
** First allocate memory for the array of per screen configs.
*/
screens = ScreenCount(dpy);
- priv->screens =
X
malloc(screens * sizeof *priv->screens);
+ priv->screens = malloc(screens * sizeof *priv->screens);
if (!priv->screens)
return GL_FALSE;
if (!priv->screens)
return GL_FALSE;
@@
-825,13
+820,13
@@
__glXInitialize(Display * dpy)
/* Drop the lock while we create the display private. */
_XUnlockMutex(_Xglobal_lock);
/* Drop the lock while we create the display private. */
_XUnlockMutex(_Xglobal_lock);
- dpyPriv =
X
calloc(1, sizeof *dpyPriv);
+ dpyPriv = calloc(1, sizeof *dpyPriv);
if (!dpyPriv)
return NULL;
dpyPriv->codes = XInitExtension(dpy, __glXExtensionName);
if (!dpyPriv->codes) {
if (!dpyPriv)
return NULL;
dpyPriv->codes = XInitExtension(dpy, __glXExtensionName);
if (!dpyPriv->codes) {
-
X
free(dpyPriv);
+ free(dpyPriv);
_XUnlockMutex(_Xglobal_lock);
return NULL;
}
_XUnlockMutex(_Xglobal_lock);
return NULL;
}
@@
-841,10
+836,13
@@
__glXInitialize(Display * dpy)
dpyPriv->serverGLXvendor = 0x0;
dpyPriv->serverGLXversion = 0x0;
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,
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;
}
_XUnlockMutex(_Xglobal_lock);
return NULL;
}
@@
-880,17
+878,20
@@
__glXInitialize(Display * dpy)
#ifdef GLX_USE_APPLEGL
if (!applegl_create_display(dpyPriv)) {
#ifdef GLX_USE_APPLEGL
if (!applegl_create_display(dpyPriv)) {
-
X
free(dpyPriv);
+ free(dpyPriv);
return NULL;
}
#endif
if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
return NULL;
}
#endif
if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
-
X
free(dpyPriv);
+ free(dpyPriv);
return NULL;
}
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. */
/* Grab the lock again and add the dispay private, unless somebody
* beat us to initializing on this display in the meantime. */