X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Futil.c;h=45bc9f5be8f9b04c9e95847be969f6838de208b1;hb=f53cd8284a0461840cea01c7c6dbc875c52fac50;hp=99e341fe959550c359131402afc2c6d56a36fdc0;hpb=e9da632729d04d23ae7f4be4c3fcdd7c1c432e85;p=bluesky.git diff --git a/bluesky/util.c b/bluesky/util.c index 99e341f..45bc9f5 100644 --- a/bluesky/util.c +++ b/bluesky/util.c @@ -383,21 +383,32 @@ void bluesky_profile_add_event(BlueSkyProfile *profile, char *message) g_mutex_unlock(profile->lock); } +static FILE *profiling_file = NULL; +static GStaticMutex profiling_print_lock = G_STATIC_MUTEX_INIT; + +void bluesky_profile_set_output(FILE *stream) +{ + profiling_file = stream; +} + void bluesky_profile_print(BlueSkyProfile *profile) { + FILE *stream = profiling_file ? profiling_file : stdout; g_return_if_fail(profile != NULL); g_mutex_lock(profile->lock); - g_print("Event Timeline: %s\n", profile->description); + g_static_mutex_lock(&profiling_print_lock); + fprintf(stream, "Event Timeline: %s\n", profile->description); GList *link = g_list_last(profile->events); bluesky_time_hires last_time = 0; while (link != NULL) { RTEvent *event = (RTEvent *)link->data; - g_print(" [%d] [%"PRIi64" ns]: %s\n", + fprintf(stream, " [%d] [%"PRIi64" ns]: %s\n", event->tid, event->timestamp - last_time, event->message); last_time = event->timestamp; link = link->prev; } + g_static_mutex_unlock(&profiling_print_lock); g_mutex_unlock(profile->lock); }