diff options
| author | Jason Sams <rjsams@android.com> | 2009-09-24 17:38:20 -0700 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2009-09-24 17:38:20 -0700 |
| commit | 65e7aa56f56097418d617663683544c25b3988ea (patch) | |
| tree | b115e9b8c4467141b3e99e1afb6159e0d964fb84 /graphics | |
| parent | 0d3999f788eb01baa8ba671878387761cbbbf861 (diff) | |
| download | frameworks_base-65e7aa56f56097418d617663683544c25b3988ea.zip frameworks_base-65e7aa56f56097418d617663683544c25b3988ea.tar.gz frameworks_base-65e7aa56f56097418d617663683544c25b3988ea.tar.bz2 | |
Implement pause/resume for the RS thread.
Diffstat (limited to 'graphics')
| -rw-r--r-- | graphics/java/android/renderscript/RSSurfaceView.java | 11 | ||||
| -rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 10 | ||||
| -rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 18 |
3 files changed, 37 insertions, 2 deletions
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java index 3d6acc9..b46a749 100644 --- a/graphics/java/android/renderscript/RSSurfaceView.java +++ b/graphics/java/android/renderscript/RSSurfaceView.java @@ -36,6 +36,7 @@ import android.view.SurfaceView; **/ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mSurfaceHolder; + private RenderScript mRS; /** * Standard View constructor. In order to render something, you @@ -97,6 +98,9 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback * Must not be called before a renderer has been set. */ public void onPause() { + if(mRS != null) { + mRS.pause(); + } Log.v(RenderScript.LOG_TAG, "onPause"); } @@ -108,6 +112,9 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback * Must not be called before a renderer has been set. */ public void onResume() { + if(mRS != null) { + mRS.resume(); + } Log.v(RenderScript.LOG_TAG, "onResume"); } @@ -138,8 +145,8 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback while ((sur == null) || (mSurfaceHolder == null)) { sur = getHolder().getSurface(); } - RenderScript rs = new RenderScript(sur, useDepth, forceSW); - return rs; + mRS = new RenderScript(sur, useDepth, forceSW); + return mRS; } public RenderScript createRenderScript(boolean useDepth) { diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index b7cd21b..f815f52 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -73,6 +73,8 @@ public class RenderScript { native void nContextBindProgramRaster(int pr); native void nContextAddDefineI32(String name, int value); native void nContextAddDefineF(String name, float value); + native void nContextPause(); + native void nContextResume(); native void nAssignName(int obj, byte[] name); native void nObjDestroy(int id); @@ -217,6 +219,14 @@ public class RenderScript { mDev = 0; } + void pause() { + nContextPause(); + } + + void resume() { + nContextResume(); + } + ////////////////////////////////////////////////////////////////////////////////// // File diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index f86d86a..9054b65 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -179,6 +179,22 @@ nContextDestroy(JNIEnv *_env, jobject _this, jint con) static void +nContextPause(JNIEnv *_env, jobject _this) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nContextPause, con(%p)", con); + rsContextPause(con); +} + +static void +nContextResume(JNIEnv *_env, jobject _this) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nContextResume, con(%p)", con); + rsContextResume(con); +} + +static void nElementBegin(JNIEnv *_env, jobject _this) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); @@ -1282,6 +1298,8 @@ static JNINativeMethod methods[] = { {"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, {"nContextCreate", "(ILandroid/view/Surface;IZ)I", (void*)nContextCreate }, {"nContextDestroy", "(I)V", (void*)nContextDestroy }, +{"nContextPause", "()V", (void*)nContextPause }, +{"nContextResume", "()V", (void*)nContextResume }, {"nAssignName", "(I[B)V", (void*)nAssignName }, {"nObjDestroy", "(I)V", (void*)nObjDestroy }, {"nObjDestroyOOB", "(I)V", (void*)nObjDestroyOOB }, |
