diff options
-rw-r--r-- | graphics/java/android/renderscript/Allocation.java | 28 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 6 | ||||
-rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 13 |
3 files changed, 34 insertions, 13 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java index a76a628..6b59b10 100644 --- a/graphics/java/android/renderscript/Allocation.java +++ b/graphics/java/android/renderscript/Allocation.java @@ -22,6 +22,7 @@ import android.content.res.Resources; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.view.Surface; import android.graphics.SurfaceTexture; import android.util.Log; import android.util.TypedValue; @@ -1185,17 +1186,38 @@ public class Allocation extends BaseObj { } /** + * * @hide + * */ - public void setSurfaceTexture(SurfaceTexture sur) { + public Surface getSurface() { + return new Surface(getSurfaceTexture()); + } + + /** + * @hide + */ + public void setSurface(Surface sur) { + mRS.validate(); if ((mUsage & USAGE_IO_OUTPUT) == 0) { throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT."); } - mRS.validate(); - mRS.nAllocationSetSurfaceTexture(getID(), sur); + mRS.nAllocationSetSurface(getID(), sur); } + /** + * @hide + */ + public void setSurfaceTexture(SurfaceTexture st) { + mRS.validate(); + if ((mUsage & USAGE_IO_OUTPUT) == 0) { + throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT."); + } + + Surface s = new Surface(st); + mRS.nAllocationSetSurface(getID(), s); + } /** * Creates a non-mipmapped renderscript allocation to use as a diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index ab6ba54..dffd400 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -299,10 +299,10 @@ public class RenderScript { validate(); rsnAllocationGetSurfaceTextureID2(mContext, alloc, st); } - native void rsnAllocationSetSurfaceTexture(int con, int alloc, SurfaceTexture sur); - synchronized void nAllocationSetSurfaceTexture(int alloc, SurfaceTexture sur) { + native void rsnAllocationSetSurface(int con, int alloc, Surface sur); + synchronized void nAllocationSetSurface(int alloc, Surface sur) { validate(); - rsnAllocationSetSurfaceTexture(mContext, alloc, sur); + rsnAllocationSetSurface(mContext, alloc, sur); } native void rsnAllocationIoSend(int con, int alloc); synchronized void nAllocationIoSend(int alloc) { diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 9d4c64f..1b7ef22 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -41,6 +41,7 @@ #include <rs.h> #include <rsEnv.h> +#include <gui/Surface.h> #include <gui/SurfaceTexture.h> #include <gui/SurfaceTextureClient.h> #include <android_runtime/android_graphics_SurfaceTexture.h> @@ -486,19 +487,17 @@ nAllocationGetSurfaceTextureID2(JNIEnv *_env, jobject _this, RsContext con, jint } static void -nAllocationSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, - RsAllocation alloc, jobject sur) +nAllocationSetSurface(JNIEnv *_env, jobject _this, RsContext con, RsAllocation alloc, jobject sur) { LOG_API("nAllocationSetSurfaceTexture, con(%p), alloc(%p), surface(%p)", con, alloc, (Surface *)sur); - sp<ANativeWindow> window; + sp<Surface> s; if (sur != 0) { - sp<SurfaceTexture> st = SurfaceTexture_getSurfaceTexture(_env, sur); - window = new SurfaceTextureClient(st); + s = Surface_getSurface(_env, sur); } - rsAllocationSetSurface(con, alloc, window.get()); + rsAllocationSetSurface(con, alloc, static_cast<ANativeWindow *>(s.get())); } static void @@ -1362,7 +1361,7 @@ static JNINativeMethod methods[] = { {"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll }, {"rsnAllocationGetSurfaceTextureID", "(II)I", (void*)nAllocationGetSurfaceTextureID }, {"rsnAllocationGetSurfaceTextureID2","(IILandroid/graphics/SurfaceTexture;)V",(void*)nAllocationGetSurfaceTextureID2 }, -{"rsnAllocationSetSurfaceTexture", "(IILandroid/graphics/SurfaceTexture;)V",(void*)nAllocationSetSurfaceTexture }, +{"rsnAllocationSetSurface", "(IILandroid/view/Surface;)V", (void*)nAllocationSetSurface }, {"rsnAllocationIoSend", "(II)V", (void*)nAllocationIoSend }, {"rsnAllocationIoReceive", "(II)V", (void*)nAllocationIoReceive }, {"rsnAllocationData1D", "(IIIII[II)V", (void*)nAllocationData1D_i }, |