From: Jakob Bornecrantz Date: Mon, 20 Apr 2009 14:05:01 +0000 (+0200) Subject: trace: Add initializer for static variables X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8ae52413c7883fa4e9bee303f7d28d6dd6953101;p=mesa.git trace: Add initializer for static variables --- diff --git a/src/gallium/drivers/trace/tr_dump.c b/src/gallium/drivers/trace/tr_dump.c index 63811b7c81e..3a1409e95a7 100644 --- a/src/gallium/drivers/trace/tr_dump.c +++ b/src/gallium/drivers/trace/tr_dump.c @@ -62,6 +62,7 @@ static unsigned refcount = 0; static pipe_mutex call_mutex; static long unsigned call_no = 0; static boolean dumping = FALSE; +static boolean initialized = FALSE; static INLINE void @@ -227,10 +228,22 @@ trace_dump_trace_close(void) } } +void trace_dump_init() +{ + if (initialized) + return; + + pipe_mutex_init(call_mutex); + dumping = FALSE; + initialized = TRUE; +} + boolean trace_dump_trace_begin() { const char *filename; + assert(initialized); + filename = debug_get_option("GALLIUM_TRACE", NULL); if(!filename) return FALSE; @@ -241,8 +254,6 @@ boolean trace_dump_trace_begin() if(!stream) return FALSE; - pipe_mutex_init(call_mutex); - trace_dump_writes("\n"); trace_dump_writes("\n"); trace_dump_writes("\n"); diff --git a/src/gallium/drivers/trace/tr_dump.h b/src/gallium/drivers/trace/tr_dump.h index 8b72b5c9fc0..31ac70802f0 100644 --- a/src/gallium/drivers/trace/tr_dump.h +++ b/src/gallium/drivers/trace/tr_dump.h @@ -42,6 +42,11 @@ struct pipe_texture; struct pipe_surface; struct pipe_transfer; +/* + * Call before use. + */ +void trace_dump_init(void); + /* * Low level dumping controls. * diff --git a/src/gallium/drivers/trace/tr_screen.c b/src/gallium/drivers/trace/tr_screen.c index 549525b82a5..12a85353428 100644 --- a/src/gallium/drivers/trace/tr_screen.c +++ b/src/gallium/drivers/trace/tr_screen.c @@ -840,6 +840,8 @@ trace_screen_create(struct pipe_screen *screen) if(!screen) goto error1; + trace_dump_init(); + if(!trace_dump_trace_begin()) goto error1;