am 4dd6fee7: Merge change Ieb4b0318 into eclair

Merge commit '4dd6fee7e444c65f3613b4126124622b32a5d4ff' into eclair-mr2

* commit '4dd6fee7e444c65f3613b4126124622b32a5d4ff':
  Make default vertex program correctly track surface size.
This commit is contained in:
Jason Sams
2009-11-12 23:06:44 -08:00
committed by Android Git Automerger
4 changed files with 21 additions and 18 deletions

View File

@ -48,28 +48,24 @@ public class FountainView extends RSSurfaceView {
private RenderScript mRS;
private FountainRS mRender;
private void destroyRS() {
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
super.surfaceChanged(holder, format, w, h);
if (mRS == null) {
mRS = createRenderScript(false, true);
mRS.contextSetSurface(w, h, holder.getSurface());
mRender = new FountainRS();
mRender.init(mRS, getResources(), w, h);
}
}
@Override
protected void onDetachedFromWindow() {
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();
mRS = createRenderScript(false, true);
mRender = new FountainRS();
mRender.init(mRS, getResources(), w, h);
}
public void surfaceDestroyed(SurfaceHolder holder) {
// Surface will be destroyed when we return
destroyRS();
}
@Override
public boolean onTouchEvent(MotionEvent ev)

View File

@ -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);

View File

@ -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)

View File

@ -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;