From c1c801e5c37d4819d76b7ca905d90a05c8e11073 Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Sun, 20 Jan 2019 22:22:21 +0100 Subject: [PATCH 1/6] Reworking log level as incremental. --- src/raudio.c | 11 +++++++---- src/raylib.h | 14 ++++++++------ src/rlgl.h | 11 +++++++---- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index 3510acd5f..1cfedf344 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -171,11 +171,14 @@ typedef struct MusicData { #if defined(RAUDIO_STANDALONE) typedef enum { - LOG_INFO = 0, - LOG_ERROR, - LOG_WARNING, + LOG_ALL, + LOG_TRACE, LOG_DEBUG, - LOG_OTHER + LOG_INFO, + LOG_WARN, + LOG_ERROR, + LOG_FATAL, + LOG_NONE } TraceLogType; #endif diff --git a/src/raylib.h b/src/raylib.h index f56500b7a..2210915f1 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -421,13 +421,15 @@ typedef enum { } ConfigFlag; // Trace log type -// NOTE: Used for bit masks typedef enum { - LOG_INFO = 1, - LOG_WARNING = 2, - LOG_ERROR = 4, - LOG_DEBUG = 8, - LOG_OTHER = 16 + LOG_ALL, // Display all logs + LOG_TRACE, + LOG_DEBUG, + LOG_INFO, + LOG_WARNING, + LOG_ERROR, + LOG_FATAL, + LOG_NONE // Disable logging } TraceLogType; // Keyboard keys diff --git a/src/rlgl.h b/src/rlgl.h index 5bec10183..a818750df 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -253,11 +253,14 @@ typedef unsigned char byte; // TraceLog message types typedef enum { - LOG_INFO = 0, - LOG_ERROR, - LOG_WARNING, + LOG_ALL, + LOG_TRACE, LOG_DEBUG, - LOG_OTHER + LOG_INFO, + LOG_WARN, + LOG_ERROR, + LOG_FATAL, + LOG_NONE } TraceLogType; // Texture formats (support depends on OpenGL version) From 78904d2bcc7345d74a59dd4dd44da685207cf787 Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Sun, 20 Jan 2019 22:23:07 +0100 Subject: [PATCH 2/6] Fixing `TraceLog` function to work on levels. --- src/utils.c | 56 ++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/src/utils.c b/src/utils.c index 1cf5c0ff0..9a312296e 100644 --- a/src/utils.c +++ b/src/utils.c @@ -92,53 +92,51 @@ void SetTraceLogCallback(TraceLogCallback callback) } // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) -void TraceLog(int msgType, const char *text, ...) +void TraceLog(TraceLogType logType, const char *text, ...) { #if defined(SUPPORT_TRACELOG) - char buffer[MAX_TRACELOG_BUFFER_SIZE] = { 0 }; + if (logType < logTypeLevel) { // Message has level below current threshold, don't emit. + return; + } + va_list args; va_start(args, text); if (logCallback) { - logCallback(msgType, text, args); + logCallback(logType, text, args); va_end(args); return; } - switch(msgType) +#if defined(PLATFORM_ANDROID) + switch(logType) { - case LOG_INFO: strcpy(buffer, "INFO: "); break; - case LOG_ERROR: strcpy(buffer, "ERROR: "); break; - case LOG_WARNING: strcpy(buffer, "WARNING: "); break; + case LOG_TRACE: __android_log_vprint(ANDROID_LOG_VERBOSE, "raylib", text, args); break; + case LOG_DEBUG: __android_log_vprint(ANDROID_LOG_DEBUG, "raylib", text, args); break; + case LOG_INFO: __android_log_vprint(ANDROID_LOG_INFO, "raylib", text, args); ; break; + case LOG_WARNING: __android_log_vprint(ANDROID_LOG_WARN, "raylib", text, args); break; + case LOG_ERROR: __android_log_vprint(ANDROID_LOG_ERROR, "raylib", text, args); break; + case LOG_FATAL: __android_log_vprint(ANDROID_LOG_FATAL, "raylib", text, args); break; + default: break; + } +#else + char buffer[MAX_TRACELOG_BUFFER_SIZE] = { 0 }; + + switch(logType) + { + case LOG_TRACE: strcpy(buffer, "TRACE: "); break; case LOG_DEBUG: strcpy(buffer, "DEBUG: "); break; - case LOG_OTHER: strcpy(buffer, "OTHER: "); break; + case LOG_INFO: strcpy(buffer, "INFO: "); ; break; + case LOG_WARNING: strcpy(buffer, "WARN: "); break; + case LOG_ERROR: strcpy(buffer, "ERROR: "); break; + case LOG_FATAL: strcpy(buffer, "FATAL: "); break; default: break; } strcat(buffer, text); strcat(buffer, "\n"); - -#if defined(PLATFORM_ANDROID) - switch(msgType) - { - case LOG_INFO: if (logTypeFlags & LOG_INFO) __android_log_vprint(ANDROID_LOG_INFO, "raylib", buffer, args); break; - case LOG_WARNING: if (logTypeFlags & LOG_WARNING) __android_log_vprint(ANDROID_LOG_WARN, "raylib", buffer, args); break; - case LOG_ERROR: if (logTypeFlags & LOG_ERROR) __android_log_vprint(ANDROID_LOG_ERROR, "raylib", buffer, args); break; - case LOG_DEBUG: if (logTypeFlags & LOG_DEBUG) __android_log_vprint(ANDROID_LOG_DEBUG, "raylib", buffer, args); break; - case LOG_OTHER: if (logTypeFlags & LOG_OTHER) __android_log_vprint(ANDROID_LOG_VERBOSE, "raylib", buffer, args); break; - default: break; - } -#else - switch(msgType) - { - case LOG_INFO: if (logTypeFlags & LOG_INFO) vprintf(buffer, args); break; - case LOG_WARNING: if (logTypeFlags & LOG_WARNING) vprintf(buffer, args); break; - case LOG_ERROR: if (logTypeFlags & LOG_ERROR) vprintf(buffer, args); break; - case LOG_DEBUG: if (logTypeFlags & LOG_DEBUG) vprintf(buffer, args); break; - case LOG_OTHER: if (logTypeFlags & LOG_OTHER) vprintf(buffer, args); break; - default: break; - } + vprintf(buffer, args); #endif va_end(args); From 932e9dbd090e48d96be8636beaaebcf11c2f9117 Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Sun, 20 Jan 2019 22:24:09 +0100 Subject: [PATCH 3/6] Fixing logging level configuration API. --- src/raylib.h | 6 +++--- src/utils.c | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index 2210915f1..325a17779 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -819,7 +819,7 @@ typedef enum { } NPatchType; // Callbacks to be implemented by users -typedef void (*TraceLogCallback)(int msgType, const char *text, va_list args); +typedef void (*TraceLogCallback)(TraceLogType logType, const char *text, va_list args); #if defined(__cplusplus) extern "C" { // Prevents name mangling of functions @@ -899,9 +899,9 @@ RLAPI Color Fade(Color color, float alpha); // Color fade- // Misc. functions RLAPI void SetConfigFlags(unsigned char flags); // Setup window configuration flags (view FLAGS) -RLAPI void SetTraceLog(unsigned char types); // Enable trace log message types (bit flags based) +RLAPI void SetTraceLogLevel(TraceLogType logType); // Set the current threshold (minimum) log level. RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set a trace log callback to enable custom logging bypassing raylib's one -RLAPI void TraceLog(int logType, const char *text, ...); // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) +RLAPI void TraceLog(TraceLogType logType, const char *text, ...); // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (saved a .png) RLAPI int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) diff --git a/src/utils.c b/src/utils.c index 9a312296e..e9f46187d 100644 --- a/src/utils.c +++ b/src/utils.c @@ -52,8 +52,8 @@ // Global Variables Definition //---------------------------------------------------------------------------------- -// Log types messages supported flags (bit based) -static unsigned char logTypeFlags = LOG_INFO | LOG_WARNING | LOG_ERROR; +// Log types messages +static TraceLogType logTypeLevel = LOG_INFO; static TraceLogCallback logCallback = NULL; #if defined(PLATFORM_ANDROID) @@ -79,10 +79,10 @@ static int android_close(void *cookie); // Module Functions Definition - Utilities //---------------------------------------------------------------------------------- -// Enable trace log message types (bit flags based) -void SetTraceLog(unsigned char types) +// Set the current threshold (minimum) log level. +void SetTraceLogLevel(TraceLogType logType) { - logTypeFlags = types; + logTypeLevel = logType; } // Set a trace log callback to enable custom logging bypassing raylib's one From f1d13aa469230960130038871a9ce785bbe55c71 Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Sun, 20 Jan 2019 22:24:41 +0100 Subject: [PATCH 4/6] Adding function to control the "exit-on-error" behaviour. --- src/raylib.h | 1 + src/utils.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/raylib.h b/src/raylib.h index 325a17779..9929a96db 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -900,6 +900,7 @@ RLAPI Color Fade(Color color, float alpha); // Color fade- // Misc. functions RLAPI void SetConfigFlags(unsigned char flags); // Setup window configuration flags (view FLAGS) RLAPI void SetTraceLogLevel(TraceLogType logType); // Set the current threshold (minimum) log level. +RLAPI void SetTraceLogExit(TraceLogType logType); // Set the exit threshold (minimum) log level. RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set a trace log callback to enable custom logging bypassing raylib's one RLAPI void TraceLog(TraceLogType logType, const char *text, ...); // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (saved a .png) diff --git a/src/utils.c b/src/utils.c index e9f46187d..ab327272d 100644 --- a/src/utils.c +++ b/src/utils.c @@ -54,6 +54,7 @@ // Log types messages static TraceLogType logTypeLevel = LOG_INFO; +static TraceLogType logTypeExit = LOG_ERROR; static TraceLogCallback logCallback = NULL; #if defined(PLATFORM_ANDROID) @@ -85,6 +86,12 @@ void SetTraceLogLevel(TraceLogType logType) logTypeLevel = logType; } +// Set the exit threshold (minimum) log level. +void SetTraceLogExit(TraceLogType logType) +{ + logTypeExit = logType; +} + // Set a trace log callback to enable custom logging bypassing raylib's one void SetTraceLogCallback(TraceLogCallback callback) { @@ -141,7 +148,7 @@ void TraceLog(TraceLogType logType, const char *text, ...) va_end(args); - if (msgType == LOG_ERROR) exit(1); // If LOG_ERROR message, exit program + if (logType >= logTypeExit) exit(1); // If exit message, exit program #endif // SUPPORT_TRACELOG } From aaced97b12cc4ba2087e3663b5ae78c40bb74bdb Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Mon, 21 Jan 2019 10:02:53 +0100 Subject: [PATCH 5/6] Fixing badly (redefined) enums. --- src/raudio.c | 2 +- src/rlgl.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index 1cfedf344..3874becfa 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -175,7 +175,7 @@ typedef enum { LOG_TRACE, LOG_DEBUG, LOG_INFO, - LOG_WARN, + LOG_WARNING, LOG_ERROR, LOG_FATAL, LOG_NONE diff --git a/src/rlgl.h b/src/rlgl.h index a818750df..253dddeb7 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -257,7 +257,7 @@ typedef unsigned char byte; LOG_TRACE, LOG_DEBUG, LOG_INFO, - LOG_WARN, + LOG_WARNING, LOG_ERROR, LOG_FATAL, LOG_NONE From 343fef4aa4532e21bd74ed84e0339756eb5ab897 Mon Sep 17 00:00:00 2001 From: Marco Lizza Date: Mon, 21 Jan 2019 10:05:40 +0100 Subject: [PATCH 6/6] Changing enums, now referenced as int. --- src/raylib.h | 8 ++++---- src/utils.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index 9929a96db..739199bae 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -819,7 +819,7 @@ typedef enum { } NPatchType; // Callbacks to be implemented by users -typedef void (*TraceLogCallback)(TraceLogType logType, const char *text, va_list args); +typedef void (*TraceLogCallback)(int logType, const char *text, va_list args); #if defined(__cplusplus) extern "C" { // Prevents name mangling of functions @@ -899,10 +899,10 @@ RLAPI Color Fade(Color color, float alpha); // Color fade- // Misc. functions RLAPI void SetConfigFlags(unsigned char flags); // Setup window configuration flags (view FLAGS) -RLAPI void SetTraceLogLevel(TraceLogType logType); // Set the current threshold (minimum) log level. -RLAPI void SetTraceLogExit(TraceLogType logType); // Set the exit threshold (minimum) log level. +RLAPI void SetTraceLogLevel(int logType); // Set the current threshold (minimum) log level. +RLAPI void SetTraceLogExit(int logType); // Set the exit threshold (minimum) log level. RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set a trace log callback to enable custom logging bypassing raylib's one -RLAPI void TraceLog(TraceLogType logType, const char *text, ...); // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) +RLAPI void TraceLog(int logType, const char *text, ...); // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (saved a .png) RLAPI int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) diff --git a/src/utils.c b/src/utils.c index ab327272d..ffce11fbb 100644 --- a/src/utils.c +++ b/src/utils.c @@ -53,8 +53,8 @@ //---------------------------------------------------------------------------------- // Log types messages -static TraceLogType logTypeLevel = LOG_INFO; -static TraceLogType logTypeExit = LOG_ERROR; +static int logTypeLevel = LOG_INFO; +static int logTypeExit = LOG_ERROR; static TraceLogCallback logCallback = NULL; #if defined(PLATFORM_ANDROID) @@ -81,13 +81,13 @@ static int android_close(void *cookie); //---------------------------------------------------------------------------------- // Set the current threshold (minimum) log level. -void SetTraceLogLevel(TraceLogType logType) +void SetTraceLogLevel(int logType) { logTypeLevel = logType; } // Set the exit threshold (minimum) log level. -void SetTraceLogExit(TraceLogType logType) +void SetTraceLogExit(int logType) { logTypeExit = logType; } @@ -99,7 +99,7 @@ void SetTraceLogCallback(TraceLogCallback callback) } // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) -void TraceLog(TraceLogType logType, const char *text, ...) +void TraceLog(int logType, const char *text, ...) { #if defined(SUPPORT_TRACELOG) if (logType < logTypeLevel) { // Message has level below current threshold, don't emit.