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. --- src/glx/dri_common.c | 24 ++++++++++++++++++++++++ src/glx/dri_common.h | 2 ++ 2 files changed, 26 insertions(+), 0 deletions(-) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 5096c1f..0e06d51 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 3bcdebc..f5c7d45 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 -- 1.7.8.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev