2 * Logging facility for debug/info messages.
3 * _EGL_FATAL messages are printed to stderr
4 * The EGL_LOG_LEVEL var controls the output of other warning/info/debug msgs.
14 #define MAXSTRING 1000
15 #define FALLBACK_LOG_LEVEL _EGL_WARNING
16 #define FALLBACK_LOG_LEVEL_STR "warning"
18 static EGLint ReportingLevel
= -1;
22 log_level_initialize(void)
24 char *log_env
= getenv("EGL_LOG_LEVEL");
26 if (log_env
== NULL
) {
27 ReportingLevel
= FALLBACK_LOG_LEVEL
;
29 else if (strcasecmp(log_env
, "fatal") == 0) {
30 ReportingLevel
= _EGL_FATAL
;
32 else if (strcasecmp(log_env
, "warning") == 0) {
33 ReportingLevel
= _EGL_WARNING
;
35 else if (strcasecmp(log_env
, "info") == 0) {
36 ReportingLevel
= _EGL_INFO
;
38 else if (strcasecmp(log_env
, "debug") == 0) {
39 ReportingLevel
= _EGL_DEBUG
;
42 fprintf(stderr
, "Unrecognized EGL_LOG_LEVEL environment variable value. "
43 "Expected one of \"fatal\", \"warning\", \"info\", \"debug\". "
44 "Got \"%s\". Falling back to \"%s\".\n",
45 log_env
, FALLBACK_LOG_LEVEL_STR
);
46 ReportingLevel
= FALLBACK_LOG_LEVEL
;
52 * Log a message to stderr.
53 * \param level one of _EGL_FATAL, _EGL_WARNING, _EGL_INFO, _EGL_DEBUG.
56 _eglLog(EGLint level
, const char *fmtStr
, ...)
61 static int log_level_initialized
= 0;
63 if (!log_level_initialized
) {
64 log_level_initialize();
65 log_level_initialized
= 1;
68 if (level
<= ReportingLevel
) {
86 va_start(args
, fmtStr
);
87 vsnprintf(msg
, MAXSTRING
, fmtStr
, args
);
90 fprintf(stderr
, "libEGL %s: %s\n", levelStr
, msg
);
92 if (level
== _EGL_FATAL
) {
93 exit(1); /* or abort()? */