From 1b1b2c35a113245248aa2d63723f596c15a3c94b Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Thu, 26 Jan 2017 09:21:53 +0100 Subject: [PATCH] Pass log levels from emugl layer --- .../host/tools/emugen/ApiGen.cpp | 9 ++----- .../ChecksumCalculatorThreadInfo.cpp | 2 +- .../shared/emugl/common/crash_reporter.cpp | 6 ++--- .../shared/emugl/common/crash_reporter.h | 6 ++--- .../shared/emugl/common/logging.cpp | 2 +- .../shared/emugl/common/logging.h | 18 +++++++++++++- src/anbox/graphics/emugl/RenderApi.cpp | 3 +-- src/anbox/graphics/emugl/RenderApi.h | 9 ++++--- src/anbox/graphics/gl_renderer_server.cpp | 24 +++++++++++++++++-- 9 files changed, 54 insertions(+), 25 deletions(-) diff --git a/external/android-emugl/host/tools/emugen/ApiGen.cpp b/external/android-emugl/host/tools/emugen/ApiGen.cpp index 7e87c07..c7713d2 100644 --- a/external/android-emugl/host/tools/emugen/ApiGen.cpp +++ b/external/android-emugl/host/tools/emugen/ApiGen.cpp @@ -823,12 +823,7 @@ int ApiGen::genDecoderImpl(const std::string &filename) fprintf(fp, "typedef unsigned int tsize_t; // Target \"size_t\", which is 32-bit for now. It may or may not be the same as host's size_t when emugen is compiled.\n\n"); // helper macros - fprintf(fp, - "#ifdef OPENGL_DEBUG_PRINTOUT\n" - "# define DEBUG(...) do { if (emugl_cxt_logger) { emugl_cxt_logger(__VA_ARGS__); } } while(0)\n" - "#else\n" - "# define DEBUG(...) ((void)0)\n" - "#endif\n\n"); + fprintf(fp, "# define DEBUG(...) do { if (emugl_cxt_logger) { emugl_cxt_logger(LogLevel::TRACE, __VA_ARGS__); } } while(0)\n\n"); fprintf(fp, "#ifdef CHECK_GLERROR\n" @@ -913,7 +908,7 @@ int ApiGen::genDecoderImpl(const std::string &filename) } } else if (pass == PASS_DebugPrint) { fprintf(fp, - "\t\t\tDEBUG(\"%s(%%p): %s(%s)\\n\", stream", + "\t\t\tDEBUG(\"%s(%%p): %s(%s)\", stream", m_basename.c_str(), e->name().c_str(), printString.c_str()); diff --git a/external/android-emugl/shared/OpenglCodecCommon/ChecksumCalculatorThreadInfo.cpp b/external/android-emugl/shared/OpenglCodecCommon/ChecksumCalculatorThreadInfo.cpp index 6a35c92..aedfea1 100644 --- a/external/android-emugl/shared/OpenglCodecCommon/ChecksumCalculatorThreadInfo.cpp +++ b/external/android-emugl/shared/OpenglCodecCommon/ChecksumCalculatorThreadInfo.cpp @@ -98,6 +98,6 @@ void ChecksumCalculatorThreadInfo::validOrDie(void* buf, // We should actually call crashhandler_die(message), but I don't think we // can link to that library from here if (!validate(buf, bufLen, checksum, checksumLen)) { - emugl_crash_reporter(message); + emugl_crash_reporter(emugl::LogLevel::FATAL, message); } } diff --git a/external/android-emugl/shared/emugl/common/crash_reporter.cpp b/external/android-emugl/shared/emugl/common/crash_reporter.cpp index b4e0267..2df5d1b 100644 --- a/external/android-emugl/shared/emugl/common/crash_reporter.cpp +++ b/external/android-emugl/shared/emugl/common/crash_reporter.cpp @@ -18,13 +18,13 @@ #include -void default_crash_reporter(const char* format, ...) { +void default_crash_reporter(const emugl::LogLevel &level, const char* format, ...) { abort(); } -crash_reporter_t emugl_crash_reporter = default_crash_reporter; +logger_t emugl_crash_reporter = default_crash_reporter; -void set_emugl_crash_reporter(crash_reporter_t crash_reporter) { +void set_emugl_crash_reporter(logger_t crash_reporter) { if (crash_reporter) { emugl_crash_reporter = crash_reporter; } else { diff --git a/external/android-emugl/shared/emugl/common/crash_reporter.h b/external/android-emugl/shared/emugl/common/crash_reporter.h index 81bb21a..3f189dd 100644 --- a/external/android-emugl/shared/emugl/common/crash_reporter.h +++ b/external/android-emugl/shared/emugl/common/crash_reporter.h @@ -16,7 +16,7 @@ #pragma once -typedef void (*crash_reporter_t)(const char* format, ...); +#include "emugl/common/logging.h" -extern crash_reporter_t emugl_crash_reporter; -void set_emugl_crash_reporter(crash_reporter_t crash_reporter); +extern logger_t emugl_crash_reporter; +void set_emugl_crash_reporter(logger_t crash_reporter); diff --git a/external/android-emugl/shared/emugl/common/logging.cpp b/external/android-emugl/shared/emugl/common/logging.cpp index 1f40ea8..69a24da 100644 --- a/external/android-emugl/shared/emugl/common/logging.cpp +++ b/external/android-emugl/shared/emugl/common/logging.cpp @@ -16,7 +16,7 @@ #include "emugl/common/logging.h" -void default_logger(const char* fmt, ...) { } +void default_logger(const emugl::LogLevel &level, const char* fmt, ...) { } logger_t emugl_logger = default_logger; logger_t emugl_cxt_logger = default_logger; diff --git a/external/android-emugl/shared/emugl/common/logging.h b/external/android-emugl/shared/emugl/common/logging.h index d8b00bd..2fc1f15 100644 --- a/external/android-emugl/shared/emugl/common/logging.h +++ b/external/android-emugl/shared/emugl/common/logging.h @@ -14,10 +14,24 @@ * limitations under the License. */ +#ifndef EMUGL_COMMON_LOGGING_H_ +#define EMUGL_COMMON_LOGGING_H_ + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wredundant-decls" -typedef void (*logger_t)(const char* fmt, ...); +namespace emugl { +enum class LogLevel { + TRACE, + DEBUG, + INFO, + WARNING, + ERROR, + FATAL, +}; +} // namespace emugl + +typedef void (*logger_t)(const emugl::LogLevel &level, const char* fmt, ...); extern logger_t emugl_logger; extern logger_t emugl_cxt_logger; void set_emugl_logger(logger_t f); @@ -40,3 +54,5 @@ void set_emugl_cxt_logger(logger_t f); #endif #pragma GCC diagnostic pop + +#endif diff --git a/src/anbox/graphics/emugl/RenderApi.cpp b/src/anbox/graphics/emugl/RenderApi.cpp index 93f343f..934be25 100644 --- a/src/anbox/graphics/emugl/RenderApi.cpp +++ b/src/anbox/graphics/emugl/RenderApi.cpp @@ -23,7 +23,6 @@ #include "OpenGLESDispatch/GLESv2Dispatch.h" #include "emugl/common/crash_reporter.h" -#include "emugl/common/logging.h" #include @@ -50,7 +49,7 @@ std::vector default_gl_libraries(bool no_glesv1) { }; } -bool initialize(const std::vector &libs, emugl_logger_struct log_funcs, emugl_crash_func_t crash_func) { +bool initialize(const std::vector &libs, emugl_logger_struct log_funcs, logger_t crash_func) { set_emugl_crash_reporter(crash_func); set_emugl_logger(log_funcs.coarse); set_emugl_cxt_logger(log_funcs.fine); diff --git a/src/anbox/graphics/emugl/RenderApi.h b/src/anbox/graphics/emugl/RenderApi.h index 7d1e93d..61c2c28 100644 --- a/src/anbox/graphics/emugl/RenderApi.h +++ b/src/anbox/graphics/emugl/RenderApi.h @@ -21,12 +21,11 @@ #include -typedef void (*emugl_logger_func_t)(const char* fmt, ...); -typedef void (*emugl_crash_func_t)(const char* format, ...); +#include "emugl/common/logging.h" typedef struct { - emugl_logger_func_t coarse; - emugl_logger_func_t fine; + logger_t coarse; + logger_t fine; } emugl_logger_struct; namespace anbox { @@ -40,7 +39,7 @@ struct GLLibrary { std::vector default_gl_libraries(bool no_glesv1 = false); -bool initialize(const std::vector &libs, emugl_logger_struct log_funcs, emugl_crash_func_t crash_func); +bool initialize(const std::vector &libs, emugl_logger_struct log_funcs, logger_t crash_func); } // namespace emugl } // namespace graphics } // namespace anbox diff --git a/src/anbox/graphics/gl_renderer_server.cpp b/src/anbox/graphics/gl_renderer_server.cpp index f8337d4..4da77f5 100644 --- a/src/anbox/graphics/gl_renderer_server.cpp +++ b/src/anbox/graphics/gl_renderer_server.cpp @@ -29,7 +29,9 @@ #include namespace { -void logger_write(const char *format, ...) { +void logger_write(const emugl::LogLevel &level, const char *format, ...) { + (void)level; + char message[2048]; va_list args; @@ -37,7 +39,25 @@ void logger_write(const char *format, ...) { vsnprintf(message, sizeof(message) - 1, format, args); va_end(args); - DEBUG("%s", message); + switch (level) { + case emugl::LogLevel::WARNING: + WARNING("%s", message); + break; + case emugl::LogLevel::ERROR: + ERROR("%s", message); + break; + case emugl::LogLevel::FATAL: + FATAL("%s", message); + break; + case emugl::LogLevel::DEBUG: + DEBUG("%s", message); + break; + case emugl::LogLevel::TRACE: + TRACE("%s", message); + break; + default: + break; + } } }