Loading libs/rs/java/Fountain/src/com/android/fountain/FountainView.java +12 −16 Original line number Diff line number Diff line Loading @@ -48,27 +48,23 @@ public class FountainView extends RSSurfaceView { private RenderScript mRS; private FountainRS mRender; private void destroyRS() { if(mRS != null) { mRS = null; destroyRenderScript(); } java.lang.System.gc(); } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { super.surfaceChanged(holder, format, w, h); destroyRS(); if (mRS == null) { mRS = createRenderScript(false, true); mRS.contextSetSurface(w, h, holder.getSurface()); mRender = new FountainRS(); mRender.init(mRS, getResources(), w, h); } public void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return destroyRS(); } @Override protected void onDetachedFromWindow() { if(mRS != null) { mRS = null; destroyRenderScript(); } } @Override Loading libs/rs/rsContext.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,7 @@ void Context::setSurface(uint32_t w, uint32_t h, Surface *sur) eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_HEIGHT, &mEGL.mHeight); mWidth = w; mHeight = h; mStateVertex.updateSize(this, w, h); if ((int)mWidth != mEGL.mWidth || (int)mHeight != mEGL.mHeight) { LOGE("EGL/Surface mismatch EGL (%i x %i) SF (%i x %i)", mEGL.mWidth, mEGL.mHeight, mWidth, mHeight); Loading libs/rs/rsProgramVertex.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -157,12 +157,17 @@ void ProgramVertexState::init(Context *rsc, int32_t w, int32_t h) pv->bindAllocation(alloc); updateSize(rsc, w, h); } void ProgramVertexState::updateSize(Context *rsc, int32_t w, int32_t h) { Matrix m; m.loadOrtho(0,w, h,0, -1,1); alloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0], 16*4); mDefaultAlloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0], 16*4); m.loadIdentity(); alloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4); mDefaultAlloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4); } void ProgramVertexState::deinit(Context *rsc) Loading libs/rs/rsProgramVertex.h +1 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public: void init(Context *rsc, int32_t w, int32_t h); void deinit(Context *rsc); void updateSize(Context *rsc, int32_t w, int32_t h); ObjectBaseRef<ProgramVertex> mDefault; ObjectBaseRef<ProgramVertex> mLast; Loading Loading
libs/rs/java/Fountain/src/com/android/fountain/FountainView.java +12 −16 Original line number Diff line number Diff line Loading @@ -48,27 +48,23 @@ public class FountainView extends RSSurfaceView { private RenderScript mRS; private FountainRS mRender; private void destroyRS() { if(mRS != null) { mRS = null; destroyRenderScript(); } java.lang.System.gc(); } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { super.surfaceChanged(holder, format, w, h); destroyRS(); if (mRS == null) { mRS = createRenderScript(false, true); mRS.contextSetSurface(w, h, holder.getSurface()); mRender = new FountainRS(); mRender.init(mRS, getResources(), w, h); } public void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return destroyRS(); } @Override protected void onDetachedFromWindow() { if(mRS != null) { mRS = null; destroyRenderScript(); } } @Override Loading
libs/rs/rsContext.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,7 @@ void Context::setSurface(uint32_t w, uint32_t h, Surface *sur) eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_HEIGHT, &mEGL.mHeight); mWidth = w; mHeight = h; mStateVertex.updateSize(this, w, h); if ((int)mWidth != mEGL.mWidth || (int)mHeight != mEGL.mHeight) { LOGE("EGL/Surface mismatch EGL (%i x %i) SF (%i x %i)", mEGL.mWidth, mEGL.mHeight, mWidth, mHeight); Loading
libs/rs/rsProgramVertex.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -157,12 +157,17 @@ void ProgramVertexState::init(Context *rsc, int32_t w, int32_t h) pv->bindAllocation(alloc); updateSize(rsc, w, h); } void ProgramVertexState::updateSize(Context *rsc, int32_t w, int32_t h) { Matrix m; m.loadOrtho(0,w, h,0, -1,1); alloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0], 16*4); mDefaultAlloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0], 16*4); m.loadIdentity(); alloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4); mDefaultAlloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4); } void ProgramVertexState::deinit(Context *rsc) Loading
libs/rs/rsProgramVertex.h +1 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public: void init(Context *rsc, int32_t w, int32_t h); void deinit(Context *rsc); void updateSize(Context *rsc, int32_t w, int32_t h); ObjectBaseRef<ProgramVertex> mDefault; ObjectBaseRef<ProgramVertex> mLast; Loading