[Mesa-dev] [PATCH 2/4] dri: Add a CriticalErrorMessageF macro.

Carl Worth cworth at cworth.org
Fri Feb 3 17:14:20 PST 2012


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



More information about the mesa-dev mailing list