am 59175ac2: Merge change I81b1421a into eclair

Merge commit '59175ac269df2a584241e9786dc70ac35cb973e3' into eclair-mr2

* commit '59175ac269df2a584241e9786dc70ac35cb973e3':
  Defer EGL init until the surface changed call comes in.  Pass w,h along with surface for verification of driver state.
This commit is contained in:
Jason Sams
2009-11-12 23:05:59 -08:00
committed by Android Git Automerger
10 changed files with 106 additions and 83 deletions

View File

@@ -80,10 +80,10 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback
*/
public void surfaceDestroyed(SurfaceHolder holder) {
// Surface will be destroyed when we return
Log.v(RenderScript.LOG_TAG, "surfaceDestroyed");
if (mRS != null) {
mRS.contextSetSurface(null);
mRS.contextSetSurface(0, 0, null);
}
//Log.v(RenderScript.LOG_TAG, "surfaceDestroyed");
}
/**
@@ -91,10 +91,10 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback
* not normally called or subclassed by clients of RSSurfaceView.
*/
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.v(RenderScript.LOG_TAG, "surfaceChanged");
if (mRS != null) {
mRS.contextSetSurface(holder.getSurface());
mRS.contextSetSurface(w, h, holder.getSurface());
}
//Log.v(RenderScript.LOG_TAG, "surfaceChanged");
}
/**
@@ -147,11 +147,8 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback
// ----------------------------------------------------------------------
public RenderScript createRenderScript(boolean useDepth, boolean forceSW) {
Surface sur = null;
while ((sur == null) || (mSurfaceHolder == null)) {
sur = getHolder().getSurface();
}
mRS = new RenderScript(sur, useDepth, forceSW);
Log.v(RenderScript.LOG_TAG, "createRenderScript");
mRS = new RenderScript(useDepth, forceSW);
return mRS;
}
@@ -160,6 +157,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
public void destroyRenderScript() {
Log.v(RenderScript.LOG_TAG, "destroyRenderScript");
mRS.destroy();
mRS = null;
}

View File

@@ -30,10 +30,12 @@ import android.view.Surface;
*
**/
public class RenderScript {
static final String LOG_TAG = "libRS_jni";
static final String LOG_TAG = "RenderScript_jni";
private static final boolean DEBUG = false;
@SuppressWarnings({"UnusedDeclaration", "deprecation"})
private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
int mWidth;
int mHeight;
@@ -62,9 +64,9 @@ public class RenderScript {
native int nDeviceCreate();
native void nDeviceDestroy(int dev);
native void nDeviceSetConfig(int dev, int param, int value);
native int nContextCreate(int dev, Surface sur, int ver, boolean useDepth);
native int nContextCreate(int dev, int ver, boolean useDepth);
native void nContextDestroy(int con);
native void nContextSetSurface(Surface sur);
native void nContextSetSurface(int w, int h, Surface sur);
native void nContextBindRootScript(int script);
native void nContextBindSampler(int sampler, int slot);
@@ -259,27 +261,31 @@ public class RenderScript {
mRS.mMessageCallback.mID = msg;
mRS.mMessageCallback.run();
}
//Log.d("rs", "MessageThread msg " + msg + " v1 " + rbuf[0] + " v2 " + rbuf[1] + " v3 " +rbuf[2]);
//Log.d(LOG_TAG, "MessageThread msg " + msg + " v1 " + rbuf[0] + " v2 " + rbuf[1] + " v3 " +rbuf[2]);
}
Log.d("rs", "MessageThread exiting.");
Log.d(LOG_TAG, "MessageThread exiting.");
}
}
public RenderScript(Surface sur, boolean useDepth, boolean forceSW) {
mSurface = sur;
public RenderScript(boolean useDepth, boolean forceSW) {
mSurface = null;
mWidth = 0;
mHeight = 0;
mDev = nDeviceCreate();
if(forceSW) {
nDeviceSetConfig(mDev, 0, 1);
}
mContext = nContextCreate(mDev, mSurface, 0, useDepth);
mContext = nContextCreate(mDev, 0, useDepth);
Element.initPredefined(this);
mMessageThread = new MessageThread(this);
mMessageThread.start();
}
public void contextSetSurface(Surface sur) {
public void contextSetSurface(int w, int h, Surface sur) {
mSurface = sur;
nContextSetSurface(mSurface);
mWidth = w;
mHeight = h;
nContextSetSurface(w, h, mSurface);
}
public void destroy() {