summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2011-11-24 18:59:56 +0800
committerChia-I Wu <olv@lunarg.com>2011-12-03 12:44:01 +0800
commit73031d16908e507727db9c8d3b64ba49708fd3a7 (patch)
treef0437994458e1af0d91c67a61970cde572a1a466
parenta73cc383327611ebe018241ee0a01b2718de2a3f (diff)
android: no global object in gallivm
Fix a race condition between threads.
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_init.c16
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) {