diff options
| author | Jason Sams <rjsams@android.com> | 2009-09-25 14:51:22 -0700 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2009-09-25 14:51:22 -0700 |
| commit | e514b45de8561fbc6ef6770845102ca10b0a69d7 (patch) | |
| tree | 572fdc8b1dbc14b53c61f9c81f90fbc642024b45 /rsProgramFragment.cpp | |
| parent | 86f1b23aaaf9b8822a009d8c3e585e46768abb6a (diff) | |
| download | android_frameworks_rs-e514b45de8561fbc6ef6770845102ca10b0a69d7.tar.gz android_frameworks_rs-e514b45de8561fbc6ef6770845102ca10b0a69d7.tar.bz2 android_frameworks_rs-e514b45de8561fbc6ef6770845102ca10b0a69d7.zip | |
Improve renderscript context teardown. Track object in the system and then force their cleanup by releasing all user references once destroy context is called. Java layer will no longer send destroy notifications for objects garbage collected once a context is destroyed.
Diffstat (limited to 'rsProgramFragment.cpp')
| -rw-r--r-- | rsProgramFragment.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp index 6cf64a4e..5f685ff5 100644 --- a/rsProgramFragment.cpp +++ b/rsProgramFragment.cpp @@ -24,8 +24,8 @@ using namespace android; using namespace android::renderscript; -ProgramFragment::ProgramFragment(Element *in, Element *out, bool pointSpriteEnable) : - Program(in, out) +ProgramFragment::ProgramFragment(Context *rsc, Element *in, Element *out, bool pointSpriteEnable) : + Program(rsc, in, out) { for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) { mEnvModes[ct] = RS_TEX_ENV_MODE_REPLACE; @@ -186,7 +186,7 @@ ProgramFragmentState::~ProgramFragmentState() void ProgramFragmentState::init(Context *rsc, int32_t w, int32_t h) { - ProgramFragment *pf = new ProgramFragment(NULL, NULL, false); + ProgramFragment *pf = new ProgramFragment(rsc, NULL, NULL, false); mDefault.set(pf); } @@ -197,7 +197,7 @@ namespace renderscript { void rsi_ProgramFragmentBegin(Context * rsc, RsElement in, RsElement out, bool pointSpriteEnable) { delete rsc->mStateFragment.mPF; - rsc->mStateFragment.mPF = new ProgramFragment((Element *)in, (Element *)out, pointSpriteEnable); + rsc->mStateFragment.mPF = new ProgramFragment(rsc, (Element *)in, (Element *)out, pointSpriteEnable); } void rsi_ProgramFragmentBindTexture(Context *rsc, RsProgramFragment vpf, uint32_t slot, RsAllocation a) |
