diff options
Diffstat (limited to 'libs/rs/driver')
-rw-r--r-- | libs/rs/driver/rsdBcc.cpp | 9 | ||||
-rw-r--r-- | libs/rs/driver/rsdBcc.h | 2 | ||||
-rw-r--r-- | libs/rs/driver/rsdCore.cpp | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/libs/rs/driver/rsdBcc.cpp b/libs/rs/driver/rsdBcc.cpp index 44ea79c..0755fb7 100644 --- a/libs/rs/driver/rsdBcc.cpp +++ b/libs/rs/driver/rsdBcc.cpp @@ -37,6 +37,7 @@ using namespace android::renderscript; struct DrvScript { int (*mRoot)(); void (*mInit)(); + void (*mFreeChildren)(); BCCScriptRef mBccScript; @@ -125,6 +126,7 @@ bool rsdScriptInit(const Context *rsc, drv->mRoot = reinterpret_cast<int (*)()>(bccGetFuncAddr(drv->mBccScript, "root")); drv->mInit = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, "init")); + drv->mFreeChildren = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, ".rs.dtor")); exportFuncCount = drv->ME->getExportFuncCount(); if (exportFuncCount > 0) { @@ -430,6 +432,13 @@ void rsdScriptInvokeInit(const Context *dc, Script *script) { } } +void rsdScriptInvokeFreeChildren(const Context *dc, Script *script) { + DrvScript *drv = (DrvScript *)script->mHal.drv; + + if (drv->mFreeChildren) { + drv->mFreeChildren(); + } +} void rsdScriptInvokeFunction(const Context *dc, Script *script, uint32_t slot, diff --git a/libs/rs/driver/rsdBcc.h b/libs/rs/driver/rsdBcc.h index 67929bc..5f83ed2 100644 --- a/libs/rs/driver/rsdBcc.h +++ b/libs/rs/driver/rsdBcc.h @@ -43,6 +43,8 @@ int rsdScriptInvokeRoot(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptInvokeInit(const android::renderscript::Context *dc, android::renderscript::Script *script); +void rsdScriptInvokeFreeChildren(const android::renderscript::Context *dc, + android::renderscript::Script *script); void rsdScriptSetGlobalVar(const android::renderscript::Context *, const android::renderscript::Script *, diff --git a/libs/rs/driver/rsdCore.cpp b/libs/rs/driver/rsdCore.cpp index 171d045..a38fff7 100644 --- a/libs/rs/driver/rsdCore.cpp +++ b/libs/rs/driver/rsdCore.cpp @@ -60,6 +60,7 @@ static RsdHalFunctions FunctionTable = { rsdScriptInvokeRoot, rsdScriptInvokeForEach, rsdScriptInvokeInit, + rsdScriptInvokeFreeChildren, rsdScriptSetGlobalVar, rsdScriptSetGlobalBind, rsdScriptSetGlobalObj, |