Mesa (master): glx: Move server GLX vendor and version strings to glx_screen
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Apr 29 22:33:32 UTC 2021
Module: Mesa
Branch: master
Commit: 21411368a3fb308e12c9656d92460293bab27b3a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=21411368a3fb308e12c9656d92460293bab27b3a
Author: Adam Jackson <ajax at redhat.com>
Date: Fri Apr 23 01:17:00 2021 -0400
glx: Move server GLX vendor and version strings to glx_screen
These can in fact vary between screens.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10418>
---
src/glx/glxclient.h | 17 +++++------------
src/glx/glxcmds.c | 5 ++---
src/glx/glxext.c | 12 ++----------
src/glx/tests/clientinfo_unittest.cpp | 2 --
4 files changed, 9 insertions(+), 27 deletions(-)
diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index fef20147dcf..7123217b0ca 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -505,9 +505,13 @@ struct glx_screen
const struct glx_screen_vtable *vtable;
/**
- * GLX extension string reported by the X-server.
+ * \name Storage for the GLX vendor, version, and extension strings
*/
+ /*@{ */
const char *serverGLXexts;
+ const char *serverGLXvendor;
+ const char *serverGLXversion;
+ /*@} */
/**
* GLX extension string to be reported to applications. This is the
@@ -576,17 +580,6 @@ struct glx_display
*/
/*@{ */
int minorVersion;
- /*@} */
-
- /**
- * \name Storage for the servers GLX vendor and versions strings.
- *
- * These are the same for all screens on this display. These fields will
- * be filled in on demand.
- */
- /*@{ */
- const char *serverGLXvendor;
- const char *serverGLXversion;
/*@} */
/**
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 16594791ca7..ecf94eeb04c 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -1359,17 +1359,16 @@ glXQueryServerString(Display * dpy, int screen, int name)
struct glx_display *priv;
const char **str;
-
if (GetGLXPrivScreenConfig(dpy, screen, &priv, &psc) != Success) {
return NULL;
}
switch (name) {
case GLX_VENDOR:
- str = &priv->serverGLXvendor;
+ str = &psc->serverGLXvendor;
break;
case GLX_VERSION:
- str = &priv->serverGLXversion;
+ str = &psc->serverGLXversion;
break;
case GLX_EXTENSIONS:
str = &psc->serverGLXexts;
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 3ba4f220924..91d021e710e 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -280,8 +280,6 @@ glx_display_free(struct glx_display *priv)
}
FreeScreenConfigs(priv);
- free((char *) priv->serverGLXvendor);
- free((char *) priv->serverGLXversion);
__glxHashDestroy(priv->glXDrawHash);
@@ -801,6 +799,8 @@ glx_screen_cleanup(struct glx_screen *psc)
psc->visuals = NULL; /* NOTE: just for paranoia */
}
free((char *) psc->serverGLXexts);
+ free((char *) psc->serverGLXvendor);
+ free((char *) psc->serverGLXversion);
}
/*
@@ -821,12 +821,6 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv)
if (!priv->screens)
return GL_FALSE;
- priv->serverGLXversion = __glXQueryServerString(dpy, 0, GLX_VERSION);
- if (priv->serverGLXversion == NULL) {
- FreeScreenConfigs(priv);
- return GL_FALSE;
- }
-
for (i = 0; i < screens; i++, psc++) {
psc = NULL;
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
@@ -892,8 +886,6 @@ __glXInitialize(Display * dpy)
dpyPriv->codes = *XInitExtension(dpy, __glXExtensionName);
dpyPriv->dpy = dpy;
- dpyPriv->serverGLXvendor = 0x0;
- dpyPriv->serverGLXversion = 0x0;
/* This GLX implementation requires X_GLXQueryExtensionsString
* and X_GLXQueryServerString, which are new in GLX 1.1.
diff --git a/src/glx/tests/clientinfo_unittest.cpp b/src/glx/tests/clientinfo_unittest.cpp
index c81a7dccebe..e9996080160 100644
--- a/src/glx/tests/clientinfo_unittest.cpp
+++ b/src/glx/tests/clientinfo_unittest.cpp
@@ -43,8 +43,6 @@ public:
this->next = 0;
this->dpy = dpy;
this->minorVersion = minor;
- this->serverGLXvendor = 0;
- this->serverGLXversion = 0;
this->glXDrawHash = 0;
this->screens = new glx_screen *[dpy->nscreens];
More information about the mesa-commit
mailing list