diff options
author | José Fonseca <[email protected]> | 2009-04-08 16:24:31 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2009-04-08 16:26:05 +0100 |
commit | e0e5d5014e84c10d3270afc9700a69c867ed282d (patch) | |
tree | e0f0ebd7036cd3e5a14c086d9888730dd9c00dee | |
parent | d2cdf6253cf06fbed6a5ca7ae17ddadf644afe26 (diff) |
trace: Make calls dumping threadsafe.
-rw-r--r-- | src/gallium/drivers/trace/tr_dump.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/trace/tr_dump.c b/src/gallium/drivers/trace/tr_dump.c index f9ee7876cbe..2618883e70d 100644 --- a/src/gallium/drivers/trace/tr_dump.c +++ b/src/gallium/drivers/trace/tr_dump.c @@ -45,6 +45,7 @@ #endif #include "pipe/p_compiler.h" +#include "pipe/p_thread.h" #include "util/u_debug.h" #include "util/u_memory.h" #include "util/u_string.h" @@ -58,6 +59,7 @@ static struct util_stream *stream = NULL; static unsigned refcount = 0; +static pipe_mutex call_mutex; static long unsigned call_no = 0; @@ -220,6 +222,7 @@ trace_dump_trace_close(void) stream = NULL; refcount = 0; call_no = 0; + pipe_mutex_destroy(call_mutex); } } @@ -237,6 +240,8 @@ boolean trace_dump_trace_begin() if(!stream) return FALSE; + pipe_mutex_init(call_mutex); + trace_dump_writes("<?xml version='1.0' encoding='UTF-8'?>\n"); trace_dump_writes("<?xml-stylesheet type='text/xsl' href='trace.xsl'?>\n"); trace_dump_writes("<trace version='0.1'>\n"); @@ -267,6 +272,7 @@ void trace_dump_trace_end(void) void trace_dump_call_begin(const char *klass, const char *method) { + pipe_mutex_lock(call_mutex); ++call_no; trace_dump_indent(1); trace_dump_writes("<call no=\'"); @@ -285,6 +291,7 @@ void trace_dump_call_end(void) trace_dump_tag_end("call"); trace_dump_newline(); util_stream_flush(stream); + pipe_mutex_unlock(call_mutex); } void trace_dump_arg_begin(const char *name) |