diff options
| author | Jason Sams <rjsams@android.com> | 2011-11-22 12:49:11 -0800 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2011-11-22 13:17:18 -0800 |
| commit | dd39fdfe99a08b0bbb03eba8f32cad4018271def (patch) | |
| tree | 01ae28f76d5edc975ad53b881de6fd73d392af5b /libs/rs | |
| parent | ec99c62e8b7c223c86a89008219be6c78f14eab8 (diff) | |
| download | frameworks_base-dd39fdfe99a08b0bbb03eba8f32cad4018271def.zip frameworks_base-dd39fdfe99a08b0bbb03eba8f32cad4018271def.tar.gz frameworks_base-dd39fdfe99a08b0bbb03eba8f32cad4018271def.tar.bz2 | |
Fix script init error handling.
Change-Id: I7ceb0af4dfd12db0274985ff658f678d7af829ff
Diffstat (limited to 'libs/rs')
| -rw-r--r-- | libs/rs/rsScript.cpp | 1 | ||||
| -rw-r--r-- | libs/rs/rsScript.h | 1 | ||||
| -rw-r--r-- | libs/rs/rsScriptC.cpp | 11 |
3 files changed, 10 insertions, 3 deletions
diff --git a/libs/rs/rsScript.cpp b/libs/rs/rsScript.cpp index 16446dd..7fc128e 100644 --- a/libs/rs/rsScript.cpp +++ b/libs/rs/rsScript.cpp @@ -26,6 +26,7 @@ Script::Script(Context *rsc) : ObjectBase(rsc) { mSlots = NULL; mTypes = NULL; + mInitialized = false; } Script::~Script() { diff --git a/libs/rs/rsScript.h b/libs/rs/rsScript.h index abb55b8..976ae78 100644 --- a/libs/rs/rsScript.h +++ b/libs/rs/rsScript.h @@ -85,6 +85,7 @@ public: virtual void setupScript(Context *rsc) = 0; virtual uint32_t run(Context *) = 0; protected: + bool mInitialized; ObjectBaseRef<Allocation> *mSlots; ObjectBaseRef<const Type> *mTypes; diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index b45366b..a5b1902 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -44,8 +44,10 @@ ScriptC::~ScriptC() { BT = NULL; } #endif - mRSC->mHal.funcs.script.invokeFreeChildren(mRSC, this); - mRSC->mHal.funcs.script.destroy(mRSC, this); + if (mInitialized) { + mRSC->mHal.funcs.script.invokeFreeChildren(mRSC, this); + mRSC->mHal.funcs.script.destroy(mRSC, this); + } } void ScriptC::setupScript(Context *rsc) { @@ -212,8 +214,11 @@ bool ScriptC::runCompiler(Context *rsc, bitcodeLen = BT->getTranslatedBitcodeSize(); #endif - rsc->mHal.funcs.script.init(rsc, this, resName, cacheDir, bitcode, bitcodeLen, 0); + if (!rsc->mHal.funcs.script.init(rsc, this, resName, cacheDir, bitcode, bitcodeLen, 0)) { + return false; + } + mInitialized = true; mEnviroment.mFragment.set(rsc->getDefaultProgramFragment()); mEnviroment.mVertex.set(rsc->getDefaultProgramVertex()); mEnviroment.mFragmentStore.set(rsc->getDefaultProgramStore()); |
