summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-24 20:50:39 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-24 20:50:39 -0400
commitcc89ef3d6e9b1f9be657c9158ad04b8de104434c (patch)
tree45c82f24c81723288c6168ad837f121fc5663573 /graphics
parent0665ae22aa51183d6ff5fdd0abeee0344306e89d (diff)
parent65e7aa56f56097418d617663683544c25b3988ea (diff)
downloadframeworks_base-cc89ef3d6e9b1f9be657c9158ad04b8de104434c.zip
frameworks_base-cc89ef3d6e9b1f9be657c9158ad04b8de104434c.tar.gz
frameworks_base-cc89ef3d6e9b1f9be657c9158ad04b8de104434c.tar.bz2
Merge change 26971 into eclair
* changes: Implement pause/resume for the RS thread.
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/renderscript/RSSurfaceView.java11
-rw-r--r--graphics/java/android/renderscript/RenderScript.java10
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp18
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 },