diff options
Diffstat (limited to 'libs/rs/rsProgramVertex.cpp')
-rw-r--r-- | libs/rs/rsProgramVertex.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp index dda56d7..9bfa602 100644 --- a/libs/rs/rsProgramVertex.cpp +++ b/libs/rs/rsProgramVertex.cpp @@ -24,9 +24,11 @@ using namespace android; using namespace android::renderscript; -ProgramVertex::ProgramVertex(Element *in, Element *out) : - Program(in, out) +ProgramVertex::ProgramVertex(Context *rsc, Element *in, Element *out) : + Program(rsc, in, out) { + mAllocFile = __FILE__; + mAllocLine = __LINE__; mTextureMatrixEnable = false; mLightCount = 0; } @@ -139,10 +141,10 @@ void ProgramVertexState::init(Context *rsc, int32_t w, int32_t h) rsi_TypeBegin(rsc, e); rsi_TypeAdd(rsc, RS_DIMENSION_X, 48); - mAllocType = rsi_TypeCreate(rsc); + mAllocType.set((Type *)rsi_TypeCreate(rsc)); - ProgramVertex *pv = new ProgramVertex(NULL, NULL); - Allocation *alloc = (Allocation *)rsi_AllocationCreateTyped(rsc, mAllocType); + ProgramVertex *pv = new ProgramVertex(rsc, NULL, NULL); + Allocation *alloc = (Allocation *)rsi_AllocationCreateTyped(rsc, mAllocType.get()); mDefaultAlloc.set(alloc); mDefault.set(pv); @@ -156,6 +158,16 @@ void ProgramVertexState::init(Context *rsc, int32_t w, int32_t h) alloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4); } +void ProgramVertexState::deinit(Context *rsc) +{ + mDefaultAlloc.clear(); + mDefault.clear(); + mAllocType.clear(); + mLast.clear(); + delete mPV; + mPV = NULL; +} + namespace android { namespace renderscript { @@ -163,7 +175,7 @@ namespace renderscript { void rsi_ProgramVertexBegin(Context *rsc, RsElement in, RsElement out) { delete rsc->mStateVertex.mPV; - rsc->mStateVertex.mPV = new ProgramVertex((Element *)in, (Element *)out); + rsc->mStateVertex.mPV = new ProgramVertex(rsc, (Element *)in, (Element *)out); } RsProgramVertex rsi_ProgramVertexCreate(Context *rsc) |