summaryrefslogtreecommitdiffhomepage
path: root/src/utils.c
diff options
context:
space:
mode:
authorPablo Marcos Oltra <[email protected]>2018-07-26 21:57:45 +0200
committerAhmad Fatoum <[email protected]>2018-07-26 21:57:45 +0200
commitc69f7953c79652c43ca56392d0df0bcf446da517 (patch)
treed8e29fb07e20c3047757850b258fbea54f8e5bd4 /src/utils.c
parent64e9d72c0705c211261dab9fc0dbf5e25b0b97f3 (diff)
downloadraylib-c69f7953c79652c43ca56392d0df0bcf446da517.tar.gz
raylib-c69f7953c79652c43ca56392d0df0bcf446da517.zip
Add SetTraceLogCallback to enable users setting custom logging (#597)
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/utils.c b/src/utils.c
index 74780680..f7c19afb 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -74,6 +74,7 @@ FILE *funopen(const void *cookie, int (*readfn)(void *, char *, int),
// Log types messages supported flags (bit based)
static unsigned char logTypeFlags = LOG_INFO | LOG_WARNING | LOG_ERROR;
+static TraceLogCallback logCallback = NULL;
#if defined(PLATFORM_ANDROID)
AAssetManager *assetManager;
@@ -99,11 +100,26 @@ void SetTraceLog(unsigned char types)
logTypeFlags = types;
}
+// Set a trace log callback to enable custom logging bypassing raylib's one
+void SetTraceLogCallback(TraceLogCallback callback)
+{
+ logCallback = callback;
+}
+
// Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG)
void TraceLog(int msgType, const char *text, ...)
{
#if defined(SUPPORT_TRACELOG)
static char buffer[128];
+ va_list args;
+ va_start(args, text);
+
+ if (logCallback)
+ {
+ logCallback(msgType, text, args);
+ va_end(args);
+ return;
+ }
switch(msgType)
{
@@ -117,9 +133,6 @@ void TraceLog(int msgType, const char *text, ...)
strcat(buffer, text);
strcat(buffer, "\n");
- va_list args;
- va_start(args, text);
-
#if defined(PLATFORM_ANDROID)
switch(msgType)
{