Loading libs/rs/rs.spec +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ ContextSetPriority { param int32_t priority } ContextDestroy { ContextDestroyWorker { } AssignName { Loading libs/rs/rsAllocation.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,6 @@ void Allocation::allocScriptMemory() { } void Allocation::freeScriptMemory() { rsAssert(!(mUsageFlags & RS_ALLOCATION_USAGE_SCRIPT)); if (mPtr) { free(mPtr); mPtr = NULL; Loading libs/rs/rsContext.cpp +31 −16 Original line number Diff line number Diff line Loading @@ -509,20 +509,6 @@ void * Context::threadProc(void *vrsc) { } LOGV("%p, RS Thread exiting", rsc); if (rsc->mIsGraphicsContext) { rsc->mRaster.clear(); rsc->mFragment.clear(); rsc->mVertex.clear(); rsc->mFragmentStore.clear(); rsc->mFont.clear(); rsc->mRootScript.clear(); rsc->mStateRaster.deinit(rsc); rsc->mStateVertex.deinit(rsc); rsc->mStateFragment.deinit(rsc); rsc->mStateFragmentStore.deinit(rsc); rsc->mStateFont.deinit(rsc); } ObjectBase::zeroAllUserRef(rsc); if (rsc->mIsGraphicsContext) { pthread_mutex_lock(&gInitMutex); Loading @@ -535,6 +521,25 @@ void * Context::threadProc(void *vrsc) { return NULL; } void Context::destroyWorkerThreadResources() { LOGV("destroyWorkerThreadResources 1"); if (mIsGraphicsContext) { mRaster.clear(); mFragment.clear(); mVertex.clear(); mFragmentStore.clear(); mFont.clear(); mRootScript.clear(); mStateRaster.deinit(this); mStateVertex.deinit(this); mStateFragment.deinit(this); mStateFragmentStore.deinit(this); mStateFont.deinit(this); } ObjectBase::zeroAllUserRef(this); LOGV("destroyWorkerThreadResources 2"); } void * Context::helperThreadProc(void *vrsc) { Context *rsc = static_cast<Context *>(vrsc); uint32_t idx = (uint32_t)android_atomic_inc(&rsc->mWorkers.mLaunchCount); Loading Loading @@ -725,6 +730,7 @@ Context::~Context() { mDev = NULL; } pthread_mutex_unlock(&gInitMutex); LOGV("Context::~Context done"); } void Context::setSurface(uint32_t w, uint32_t h, ANativeWindow *sur) { Loading Loading @@ -1019,13 +1025,22 @@ void rsi_ContextDump(Context *rsc, int32_t bits) { ObjectBase::dumpAll(rsc); } void rsi_ContextDestroy(Context *rsc) { delete rsc; void rsi_ContextDestroyWorker(Context *rsc) { LOGE("rsi_ContextDestroyWorker 1"); rsc->destroyWorkerThreadResources();; LOGE("rsi_ContextDestroyWorker 2"); } } } void rsContextDestroy(RsContext vcon) { LOGV("rsContextDestroy %p", vcon); Context *rsc = static_cast<Context *>(vcon); rsContextDestroyWorker(rsc); delete rsc; LOGV("rsContextDestroy 2 %p", vcon); } RsContext rsContextCreate(RsDevice vdev, uint32_t version) { LOGV("rsContextCreate %p", vdev); Loading libs/rs/rsContext.h +1 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ public: void resume(); void setSurface(uint32_t w, uint32_t h, ANativeWindow *sur); void setPriority(int32_t p); void destroyWorkerThreadResources(); void assignName(ObjectBase *obj, const char *name, uint32_t len); void removeName(ObjectBase *obj); Loading libs/rs/rsScriptC.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -37,13 +37,13 @@ using namespace android::renderscript; ScriptC::ScriptC(Context *rsc) : Script(rsc) { LOGD(">>>> ScriptC ctor called, obj=%x", this); LOGD(">>>> ScriptC ctor called, obj=%p", this); mBccScript = NULL; memset(&mProgram, 0, sizeof(mProgram)); } ScriptC::~ScriptC() { LOGD(">>>> ~ScriptC()"); LOGD(">>>> ~ScriptC() mBccScript = %p", mBccScript); if (mBccScript) { bccDeleteScript(mBccScript); LOGD(">>>> ~ScriptC(mBCCScript)"); Loading Loading
libs/rs/rs.spec +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ ContextSetPriority { param int32_t priority } ContextDestroy { ContextDestroyWorker { } AssignName { Loading
libs/rs/rsAllocation.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,6 @@ void Allocation::allocScriptMemory() { } void Allocation::freeScriptMemory() { rsAssert(!(mUsageFlags & RS_ALLOCATION_USAGE_SCRIPT)); if (mPtr) { free(mPtr); mPtr = NULL; Loading
libs/rs/rsContext.cpp +31 −16 Original line number Diff line number Diff line Loading @@ -509,20 +509,6 @@ void * Context::threadProc(void *vrsc) { } LOGV("%p, RS Thread exiting", rsc); if (rsc->mIsGraphicsContext) { rsc->mRaster.clear(); rsc->mFragment.clear(); rsc->mVertex.clear(); rsc->mFragmentStore.clear(); rsc->mFont.clear(); rsc->mRootScript.clear(); rsc->mStateRaster.deinit(rsc); rsc->mStateVertex.deinit(rsc); rsc->mStateFragment.deinit(rsc); rsc->mStateFragmentStore.deinit(rsc); rsc->mStateFont.deinit(rsc); } ObjectBase::zeroAllUserRef(rsc); if (rsc->mIsGraphicsContext) { pthread_mutex_lock(&gInitMutex); Loading @@ -535,6 +521,25 @@ void * Context::threadProc(void *vrsc) { return NULL; } void Context::destroyWorkerThreadResources() { LOGV("destroyWorkerThreadResources 1"); if (mIsGraphicsContext) { mRaster.clear(); mFragment.clear(); mVertex.clear(); mFragmentStore.clear(); mFont.clear(); mRootScript.clear(); mStateRaster.deinit(this); mStateVertex.deinit(this); mStateFragment.deinit(this); mStateFragmentStore.deinit(this); mStateFont.deinit(this); } ObjectBase::zeroAllUserRef(this); LOGV("destroyWorkerThreadResources 2"); } void * Context::helperThreadProc(void *vrsc) { Context *rsc = static_cast<Context *>(vrsc); uint32_t idx = (uint32_t)android_atomic_inc(&rsc->mWorkers.mLaunchCount); Loading Loading @@ -725,6 +730,7 @@ Context::~Context() { mDev = NULL; } pthread_mutex_unlock(&gInitMutex); LOGV("Context::~Context done"); } void Context::setSurface(uint32_t w, uint32_t h, ANativeWindow *sur) { Loading Loading @@ -1019,13 +1025,22 @@ void rsi_ContextDump(Context *rsc, int32_t bits) { ObjectBase::dumpAll(rsc); } void rsi_ContextDestroy(Context *rsc) { delete rsc; void rsi_ContextDestroyWorker(Context *rsc) { LOGE("rsi_ContextDestroyWorker 1"); rsc->destroyWorkerThreadResources();; LOGE("rsi_ContextDestroyWorker 2"); } } } void rsContextDestroy(RsContext vcon) { LOGV("rsContextDestroy %p", vcon); Context *rsc = static_cast<Context *>(vcon); rsContextDestroyWorker(rsc); delete rsc; LOGV("rsContextDestroy 2 %p", vcon); } RsContext rsContextCreate(RsDevice vdev, uint32_t version) { LOGV("rsContextCreate %p", vdev); Loading
libs/rs/rsContext.h +1 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ public: void resume(); void setSurface(uint32_t w, uint32_t h, ANativeWindow *sur); void setPriority(int32_t p); void destroyWorkerThreadResources(); void assignName(ObjectBase *obj, const char *name, uint32_t len); void removeName(ObjectBase *obj); Loading
libs/rs/rsScriptC.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -37,13 +37,13 @@ using namespace android::renderscript; ScriptC::ScriptC(Context *rsc) : Script(rsc) { LOGD(">>>> ScriptC ctor called, obj=%x", this); LOGD(">>>> ScriptC ctor called, obj=%p", this); mBccScript = NULL; memset(&mProgram, 0, sizeof(mProgram)); } ScriptC::~ScriptC() { LOGD(">>>> ~ScriptC()"); LOGD(">>>> ~ScriptC() mBccScript = %p", mBccScript); if (mBccScript) { bccDeleteScript(mBccScript); LOGD(">>>> ~ScriptC(mBCCScript)"); Loading