Mesa (master): glx: implement __glXGetString, hide __glXGetStringFromServer

Brian Paul brianp at kemper.freedesktop.org
Wed Nov 26 17:03:59 UTC 2008


Module: Mesa
Branch: master
Commit: 24b8a8cfe8210ac7bdd661c88523465633151219
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=24b8a8cfe8210ac7bdd661c88523465633151219

Author: RALOVICH, Kristóf <tade60 at freemail.hu>
Date:   Mon Nov  3 18:31:22 2008 +0100

glx: implement __glXGetString, hide __glXGetStringFromServer

---

 src/glx/x11/glx_query.c |   87 ++++++++++++++++++++++++++++++++++++++---------
 src/glx/x11/glxclient.h |    6 +---
 2 files changed, 72 insertions(+), 21 deletions(-)

diff --git a/src/glx/x11/glx_query.c b/src/glx/x11/glx_query.c
index ef33f7c..2ad2b82 100644
--- a/src/glx/x11/glx_query.c
+++ b/src/glx/x11/glx_query.c
@@ -37,6 +37,62 @@
 # include <xcb/glx.h>
 #endif
 
+#ifdef USE_XCB
+
+/**
+ * Exchange a protocol request for glXQueryServerString.
+ */
+char *
+__glXQueryServerString(Display* dpy,
+                       CARD32 screen,
+                       CARD32 name)
+{
+   xcb_connection_t *c = XGetXCBConnection(dpy);
+   xcb_glx_query_server_string_reply_t* reply =
+      xcb_glx_query_server_string_reply(c,
+                                        xcb_glx_query_server_string(c,
+                                                                    screen,
+                                                                    name),
+                                        NULL);
+
+   /* The spec doesn't mention this, but the Xorg server replies with
+    * a string already terminated with '\0'. */
+   uint32_t len = xcb_glx_query_server_string_string_length(reply);
+   char* buf = Xmalloc(len);
+   memcpy(buf, xcb_glx_query_server_string_string(reply), len);
+   free(reply);
+
+   return buf;
+}
+
+/**
+ * Exchange a protocol request for glGetString.
+ */
+char *
+__glXGetString(Display* dpy,
+               CARD32 contextTag,
+               CARD32 name)
+{
+   xcb_connection_t *c = XGetXCBConnection(dpy);
+   xcb_glx_get_string_reply_t* reply =
+      xcb_glx_get_string_reply(c,
+                               xcb_glx_get_string(c,
+                                                  contextTag,
+                                                  name),
+                               NULL);
+
+   /* The spec doesn't mention this, but the Xorg server replies with
+    * a string already terminated with '\0'. */
+   uint32_t len = xcb_glx_get_string_string_length(reply);
+   char* buf = Xmalloc(len);
+   memcpy(buf, xcb_glx_get_string_string(reply), len);
+   free(reply);
+
+   return buf;
+}
+
+#else
+
 /**
  * GLX protocol structure for the ficticious "GXLGenericGetString" request.
  * 
@@ -108,27 +164,26 @@ __glXGetStringFromServer(Display * dpy, int opcode, CARD32 glxCode,
    return buf;
 }
 
-#ifdef USE_XCB
 char *
 __glXQueryServerString(Display* dpy,
                        CARD32 screen,
                        CARD32 name)
 {
-   xcb_connection_t *c = XGetXCBConnection(dpy);
-   xcb_glx_query_server_string_reply_t* reply =
-      xcb_glx_query_server_string_reply(c,
-                                        xcb_glx_query_server_string(c,
-                                                                    screen,
-                                                                    name),
-                                        NULL);
-
-   /* The spec doesn't mention this, but the Xorg server replies with
-    * a string already terminated with '\0'. */
-   uint32_t len = xcb_glx_query_server_string_string_length(reply);
-   char* buf = Xmalloc(len);
-   memcpy(buf, xcb_glx_query_server_string_string(reply), len);
-   free(reply);
+   GLXContext gc = __glXGetCurrentContext();
+   return __glXGetStringFromServer(dpy, gc->majorOpcode,
+                                   X_GLXQueryServerString,
+                                   screen, name);
+}
 
-   return buf;
+char *
+__glXGetString(Display* dpy,
+               CARD32 contextTag,
+               CARD32 name)
+{
+   GLXContext gc = __glXGetCurrentContext();
+   return __glXGetStringFromServer(dpy, gc->majorOpcode, X_GLsop_GetString,
+                                   contextTag, name);
 }
+
 #endif /* USE_XCB */
+
diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h
index 8f1e691..361ab70 100644
--- a/src/glx/x11/glxclient.h
+++ b/src/glx/x11/glxclient.h
@@ -739,12 +739,8 @@ 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 * __glXGetStringFromServer( Display * dpy, int opcode,
-    CARD32 glxCode, CARD32 for_whom, CARD32 name );
-
-#ifdef USE_XCB
 extern char * __glXQueryServerString(Display* dpy, CARD32 screen, CARD32 name);
-#endif
+extern char * __glXGetString(Display* dpy, CARD32 screen, CARD32 name);
 
 extern char *__glXstrdup(const char *str);
 




More information about the mesa-commit mailing list