From 92bef0bfa121e0e58112ffae352c8ad9e5da6307 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Fri, 3 Feb 2012 16:17:29 -0800 Subject: [PATCH] dri: Add a CriticalErrorMessageF macro. Sometimes an error is so sever that we want to print it even when the user hasn't specifically requested debugging by setting LIBGL_DEBUG. Add a CriticalErrorMessageF macro to be used for this case. (The error message can still be slienced with the existing LIBGL_DEBUG=quiet). For critical error messages we also direct the user to set the LIBGL_DEBUG environment variable for more details. Reviewed-by: Eugeni Dodonov --- src/glx/dri_common.c | 24 ++++++++++++++++++++++++ src/glx/dri_common.h | 2 ++ 2 files changed, 26 insertions(+) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 5096c1f587e..0e06d51b4c7 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -84,6 +84,30 @@ ErrorMessageF(const char *f, ...) } } +/** + * Print error message unless LIBGL_DEBUG is set to "quiet". + * + * The distinction between CriticalErrorMessageF and ErrorMessageF is + * that critcial errors will be printed by default, (even when + * LIBGL_DEBUG is unset). + */ +_X_HIDDEN void +CriticalErrorMessageF(const char *f, ...) +{ + va_list args; + const char *env; + + if (!(env = getenv("LIBGL_DEBUG")) || !strstr(env, "quiet")) { + fprintf(stderr, "libGL error: "); + va_start(args, f); + vfprintf(stderr, f, args); + va_end(args); + + if (!env || !strstr(env, "verbose")) + fprintf(stderr, "libGL error: Try again with LIBGL_DEBUG=verbose for more details.\n"); + } +} + #ifndef DEFAULT_DRIVER_DIR /* this is normally defined in Mesa/configs/default with DRI_DRIVER_SEARCH_PATH */ #define DEFAULT_DRIVER_DIR "/usr/local/lib/dri" diff --git a/src/glx/dri_common.h b/src/glx/dri_common.h index 3bcdebcc529..f5c7d456ee1 100644 --- a/src/glx/dri_common.h +++ b/src/glx/dri_common.h @@ -65,6 +65,8 @@ extern void InfoMessageF(const char *f, ...); extern void ErrorMessageF(const char *f, ...); +extern void CriticalErrorMessageF(const char *f, ...); + extern void *driOpenDriver(const char *driverName); extern bool -- 2.30.2