Skip to content

Commit 9d40bf4

Browse files
committed
Add ability to redirect mono stdout logging to unity's vprintf function.
1 parent 80dbc48 commit 9d40bf4

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

mono/eglib/goutput.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ static GLogLevelFlags fatal = G_LOG_LEVEL_ERROR;
3636
static GLogFunc default_log_func;
3737
static gpointer default_log_func_user_data;
3838
static GPrintFunc stdout_handler, stderr_handler;
39+
typedef void (*vprintf_func)(const char* msg, va_list args);
40+
static vprintf_func our_vprintf = vprintf;
3941

4042
static void default_stdout_handler (const gchar *string);
4143
static void default_stderr_handler (const gchar *string);
@@ -274,3 +276,23 @@ g_set_printerr_handler (GPrintFunc func)
274276
return old;
275277
}
276278

279+
static void
280+
unity_vprintf_GPrintFunc_adapter (const gchar *string)
281+
{
282+
our_vprintf(string, NULL);
283+
}
284+
285+
static void
286+
unity_vprintf_GLogFunc_adapter (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
287+
{
288+
our_vprintf(message, NULL);
289+
}
290+
291+
// Redirect all stdout output to unity vprintf function
292+
void set_vprintf_func(vprintf_func func)
293+
{
294+
our_vprintf = func;
295+
g_set_print_handler(unity_vprintf_GPrintFunc_adapter);
296+
g_log_set_default_handler(unity_vprintf_GLogFunc_adapter, NULL);
297+
}
298+

mono/metadata/unity-utils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ mono_unity_socket_security_enabled_set (gboolean enabled)
8282

8383
void mono_unity_set_vprintf_func (vprintf_func func)
8484
{
85-
//set_vprintf_func (func);
85+
set_vprintf_func (func);
8686
}
8787

8888
MONO_API gboolean

0 commit comments

Comments
 (0)