From: Carl Worth Date: Sat, 4 Feb 2012 00:17:29 +0000 (-0800) Subject: dri: Add a CriticalErrorMessageF macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=92bef0bfa121e0e58112ffae352c8ad9e5da6307;p=mesa.git 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 --- 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