diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/egl/main/Makefile | 2 | ||||
-rw-r--r-- | src/egl/main/egllog.c | 57 | ||||
-rw-r--r-- | src/egl/main/egllog.h | 16 |
3 files changed, 75 insertions, 0 deletions
diff --git a/src/egl/main/Makefile b/src/egl/main/Makefile index 4bb1ffc9e8..45a4fb39b8 100644 --- a/src/egl/main/Makefile +++ b/src/egl/main/Makefile @@ -12,6 +12,7 @@ HEADERS = \ egldisplay.h \ egldriver.h \ eglglobals.h \ + egllog.h \ eglhash.h \ eglmode.h \ eglscreen.h \ @@ -24,6 +25,7 @@ SOURCES = \ egldisplay.c \ egldriver.c \ eglglobals.c \ + egllog.c \ eglhash.c \ eglmode.c \ eglscreen.c \ diff --git a/src/egl/main/egllog.c b/src/egl/main/egllog.c new file mode 100644 index 0000000000..59b1d2684e --- /dev/null +++ b/src/egl/main/egllog.c @@ -0,0 +1,57 @@ +/** + * Logging facility for debug/info messages. + */ + + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include "egllog.h" + +#define MAXSTRING 1000 + + +/* XXX init this with an env var or something */ +static EGLint ReportingLevel = _EGL_DEBUG; + + +/** + * Log a message to stderr. + * \param level one of _EGL_FATAL, _EGL_WARNING, _EGL_INFO, _EGL_DEBUG. + */ +void +_eglLog(EGLint level, const char *fmtStr, ...) +{ + va_list args; + char msg[MAXSTRING]; + const char *levelStr; + + if (level <= ReportingLevel) { + switch (level) { + case _EGL_FATAL: + levelStr = "Fatal"; + break; + case _EGL_WARNING: + levelStr = "Warning"; + break; + case _EGL_INFO: + levelStr = "Info"; + break; + case _EGL_DEBUG: + levelStr = "Debug"; + break; + default: + levelStr = ""; + } + + va_start(args, fmtStr); + vsnprintf(msg, MAXSTRING, fmtStr, args); + va_end(args); + + fprintf(stderr, "EGL %s: %s\n", levelStr, msg); + + if (level == _EGL_FATAL) { + exit(1); /* or abort()? */ + } + } +} diff --git a/src/egl/main/egllog.h b/src/egl/main/egllog.h new file mode 100644 index 0000000000..2fa352f155 --- /dev/null +++ b/src/egl/main/egllog.h @@ -0,0 +1,16 @@ +#ifndef EGLLOG_INCLUDED +#define EGLLOG_INCLUDED + +#include "egltypedefs.h" + +#define _EGL_FATAL 0 /* unrecoverable error */ +#define _EGL_WARNING 1 /* recoverable error/problem */ +#define _EGL_INFO 2 /* just useful info */ +#define _EGL_DEBUG 3 /* useful info for debugging */ + + +extern void +_eglLog(EGLint level, const char *fmtStr, ...); + + +#endif /* EGLLOG_INCLUDED */ |