New _eglLog() function to replace fprintf/printf calls for debug/info.
This commit is contained in:
@@ -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 \
|
||||
|
||||
@@ -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()? */
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 */
|
||||
Reference in New Issue
Block a user