Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dd6fee7 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change Ieb4b0318 into eclair

* changes:
  Make default vertex program correctly track surface size.
parents 572e0087 eb4b0318
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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);
+7 −2
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -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;