Fix tls crash on startup if more than one RS contexts are created in one process.

This commit is contained in:
Jason Sams
2009-10-06 17:16:55 -07:00
parent 516c319115
commit 996db8dace
2 changed files with 10 additions and 4 deletions

View File

@@ -304,10 +304,15 @@ Context::Context(Device *dev, Surface *sur, bool useDepth)
int status;
pthread_attr_t threadAttr;
status = pthread_key_create(&gThreadTLSKey, NULL);
if (status) {
LOGE("Failed to init thread tls key.");
return;
if (!gThreadTLSKey) {
status = pthread_key_create(&gThreadTLSKey, NULL);
if (status) {
LOGE("Failed to init thread tls key.");
return;
}
} else {
// HACK: workaround gl hang on start
exit(-1);
}
status = pthread_attr_init(&threadAttr);

View File

@@ -62,6 +62,7 @@ bool ScriptC::run(Context *rsc, uint32_t launchIndex)
{
Context::ScriptTLSStruct * tls =
(Context::ScriptTLSStruct *)pthread_getspecific(Context::gThreadTLSKey);
rsAssert(tls);
if (mEnviroment.mFragmentStore.get()) {
rsc->setFragmentStore(mEnviroment.mFragmentStore.get());