summaryrefslogtreecommitdiffstats
path: root/src/glx/dri_common.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-01-23 11:03:53 -0800
committerEric Anholt <[email protected]>2014-01-27 09:37:29 -0800
commit4a8da40fc089d465b72ecee89e24cd92e6714669 (patch)
tree983c52083b7803ff60ccb70b7377c0e5c154fac1 /src/glx/dri_common.c
parent7bd95ec437a5b1052fa17780a9d66677ec1fdc35 (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.c25
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".