diff options
author | Chia-I Wu <olv@lunarg.com> | 2011-11-24 18:59:56 +0800 |
---|---|---|
committer | Chia-I Wu <olv@lunarg.com> | 2011-12-03 12:44:01 +0800 |
commit | 73031d16908e507727db9c8d3b64ba49708fd3a7 (patch) | |
tree | f0437994458e1af0d91c67a61970cde572a1a466 | |
parent | a73cc383327611ebe018241ee0a01b2718de2a3f (diff) |
android: no global object in gallivm
Fix a race condition between threads.
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_init.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 45addee8fa..0a8d98257c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -81,18 +81,6 @@ enum LLVM_CodeGenOpt_Level { }; -/** - * LLVM 2.6 permits only one ExecutionEngine to be created. This is it. - */ -static LLVMExecutionEngineRef GlobalEngine = NULL; - -/** - * Same gallivm state shared by all contexts. - */ -static struct gallivm_state *GlobalGallivm = NULL; - - - extern void lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE); @@ -222,6 +210,8 @@ free_gallivm_state(struct gallivm_state *gallivm) static boolean init_gallivm_state(struct gallivm_state *gallivm) { + LLVMExecutionEngineRef GlobalEngine = NULL; + assert(!gallivm->context); assert(!gallivm->module); assert(!gallivm->provider); @@ -422,6 +412,8 @@ lp_build_init(void) struct gallivm_state * gallivm_create(void) { + struct gallivm_state *GlobalGallivm = NULL; + if (!GlobalGallivm) { GlobalGallivm = CALLOC_STRUCT(gallivm_state); if (GlobalGallivm) { |