diff options
author | Eric Anholt <[email protected]> | 2014-01-23 11:03:53 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-01-27 09:37:29 -0800 |
commit | 4a8da40fc089d465b72ecee89e24cd92e6714669 (patch) | |
tree | 983c52083b7803ff60ccb70b7377c0e5c154fac1 /src/glx/dri_common.c | |
parent | 7bd95ec437a5b1052fa17780a9d66677ec1fdc35 (diff) |
dri: Fix the logger error message handling.
Since the loader changes, there has been a compiler warning that the
prototype didn't match. It turns out that if a loader error message was
ever thrown, you'd segfault because of trying to use the warning level as
a format string.
Reviewed-by: Keith Packard <[email protected]>
Tested-by: Keith Packard <[email protected]>
Reviewed-by: Kristian Høgsberg <[email protected]>
Diffstat (limited to 'src/glx/dri_common.c')
-rw-r--r-- | src/glx/dri_common.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index b5058c97c6e..93c45ea7bbd 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -40,6 +40,7 @@ #include <stdarg.h> #include "glxclient.h" #include "dri_common.h" +#include "loader.h" #ifndef RTLD_NOW #define RTLD_NOW 0 @@ -48,6 +49,30 @@ #define RTLD_GLOBAL 0 #endif +_X_HIDDEN void +dri_message(int level, const char *f, ...) +{ + va_list args; + int threshold = _LOADER_WARNING; + const char *libgl_debug; + + libgl_debug = getenv("LIBGL_DEBUG"); + if (libgl_debug) { + if (strstr(libgl_debug, "quiet")) + threshold = _LOADER_FATAL; + else if (strstr(libgl_debug, "verbose")) + threshold = _LOADER_DEBUG; + } + + /* Note that the _LOADER_* levels are lower numbers for more severe. */ + if (level <= threshold) { + fprintf(stderr, "libGL%s: ", level <= _LOADER_WARNING ? " error" : ""); + va_start(args, f); + vfprintf(stderr, f, args); + va_end(args); + } +} + /** * Print informational message to stderr if LIBGL_DEBUG is set to * "verbose". |