2 * Logging facility for debug/info messages.
12 #define MAXSTRING 1000
13 #define FALLBACK_LOG_LEVEL _EGL_DEBUG
14 #define FALLBACK_LOG_LEVEL_STR "debug"
16 static EGLint ReportingLevel
= -1;
20 log_level_initialize (void)
22 char *log_env
= getenv ("EGL_LOG_LEVEL");
24 if (log_env
== NULL
) {
25 ReportingLevel
= FALLBACK_LOG_LEVEL
;
27 else if (strcasecmp (log_env
, "fatal") == 0) {
28 ReportingLevel
= _EGL_FATAL
;
30 else if (strcasecmp (log_env
, "warning") == 0) {
31 ReportingLevel
= _EGL_WARNING
;
33 else if (strcasecmp (log_env
, "info") == 0) {
34 ReportingLevel
= _EGL_INFO
;
36 else if (strcasecmp (log_env
, "debug") == 0) {
37 ReportingLevel
= _EGL_DEBUG
;
40 fprintf (stderr
, "Unrecognized EGL_LOG_LEVEL environment variable value. "
41 "Expected one of \"fatal\", \"warning\", \"info\", \"debug\". "
42 "Got \"%s\". Falling back to \"%s\".\n",
43 log_env
, FALLBACK_LOG_LEVEL_STR
);
44 ReportingLevel
= FALLBACK_LOG_LEVEL
;
50 * Log a message to stderr.
51 * \param level one of _EGL_FATAL, _EGL_WARNING, _EGL_INFO, _EGL_DEBUG.
54 _eglLog(EGLint level
, const char *fmtStr
, ...)
59 static int log_level_initialized
= 0;
61 if (!log_level_initialized
) {
62 log_level_initialize ();
63 log_level_initialized
= 1;
66 if (level
<= ReportingLevel
) {
84 va_start(args
, fmtStr
);
85 vsnprintf(msg
, MAXSTRING
, fmtStr
, args
);
88 fprintf(stderr
, "EGL %s: %s\n", levelStr
, msg
);
90 if (level
== _EGL_FATAL
) {
91 exit(1); /* or abort()? */