util: add debug_warn_once() macro
authorBrian Paul <brianp@vmware.com>
Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)
committerBrian Paul <brianp@vmware.com>
Sat, 7 Jan 2012 21:16:27 +0000 (14:16 -0700)
Emits a warning message, but only once to avoid tons of repeated warnings.

src/gallium/auxiliary/util/u_debug.h

index cbea35830375da3e144a4c645f97755a7da14956..ed19cda05a29e6e14b93206931e4ebf954b8d369 100644 (file)
@@ -214,6 +214,25 @@ void _debug_assert_fail(const char *expr,
 #endif
 
 
+/**
+ * Emit a warning message, but only once.
+ */
+#ifdef DEBUG
+#define debug_warn_once(__msg) \
+   do { \
+      static bool warned = FALSE; \
+      if (!warned) { \
+         _debug_printf("%s:%u:%s: one time warning: %s\n", \
+                       __FILE__, __LINE__, __FUNCTION__, __msg); \
+         warned = TRUE; \
+      } \
+   } while (0)
+#else
+#define debug_warn_once(__msg) \
+   ((void)0) 
+#endif
+
+
 /**
  * Output an error message. Not muted on release version.
  */