From fa8cbc45e883762f3c3f1f11497a035c217f8d65 Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 22 Aug 2007 18:35:50 -0600 Subject: Need to store vendor and renderer strings in the context. As it was, we always returned the same pointer. So glxinfo, which calls glGetString() before printing anything, was printing the same string for both vendor and renderer. --- src/mesa/state_tracker/st_cb_strings.c | 14 ++++++-------- src/mesa/state_tracker/st_context.h | 3 +++ 2 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src/mesa') diff --git a/src/mesa/state_tracker/st_cb_strings.c b/src/mesa/state_tracker/st_cb_strings.c index ac1a8b14224..776f518e2bb 100644 --- a/src/mesa/state_tracker/st_cb_strings.c +++ b/src/mesa/state_tracker/st_cb_strings.c @@ -46,8 +46,6 @@ st_get_string(GLcontext * ctx, GLenum name) { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; - static char buffer[128]; - switch (name) { case GL_VENDOR: { @@ -59,20 +57,20 @@ st_get_string(GLcontext * ctx, GLenum name) * additional string allows "and XyzCorp" to reflect this. */ if (vendor && strcmp(vendor, tungsten) != 0) - snprintf(buffer, sizeof(buffer), "%s and %s", tungsten, vendor); + snprintf(st->vendor, sizeof(st->vendor), + "%s and %s", tungsten, vendor); else - snprintf(buffer, sizeof(buffer), "%s", tungsten); + snprintf(st->vendor, sizeof(st->vendor), "%s", tungsten); - return (GLubyte *) buffer; - break; + return (GLubyte *) st->vendor; } case GL_RENDERER: - snprintf(buffer, sizeof(buffer), "TG3D, %s on %s", + snprintf(st->renderer, sizeof(st->renderer), "TG3D, %s on %s", pipe->get_name( pipe ), pipe->winsys->get_name( pipe->winsys )); - return (GLubyte *) buffer; + return (GLubyte *) st->renderer; default: return NULL; diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 38d6a3ed86e..13ea28237c9 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -97,6 +97,9 @@ struct st_context GLuint frontbuffer_dirty:1; } flags; + char vendor[100]; + char renderer[100]; + /* State to be validated: */ struct st_tracked_state **atoms; -- cgit v1.2.3