Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb9aa9f3 authored by Jason Sams's avatar Jason Sams
Browse files

Convert from SurfaceTexture to Surface

Change-Id: I2ad4307294d4144999ca0c12ac19849b188243fb
parent 972ed580
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -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;
@@ -1184,18 +1185,39 @@ public class Allocation extends BaseObj {
        return st;
    }

    /**
     *
     * @hide
     *
     */
    public Surface getSurface() {
        return new Surface(getSurfaceTexture());
    }

    /**
     * @hide
     */
    public void setSurfaceTexture(SurfaceTexture sur) {
    public void setSurface(Surface sur) {
        mRS.validate();
        if ((mUsage & USAGE_IO_OUTPUT) == 0) {
            throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT.");
        }

        mRS.nAllocationSetSurface(getID(), sur);
    }

    /**
     * @hide
     */
    public void setSurfaceTexture(SurfaceTexture st) {
        mRS.validate();
        mRS.nAllocationSetSurfaceTexture(getID(), sur);
        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
+3 −3
Original line number Diff line number Diff line
@@ -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) {
+6 −7
Original line number Diff line number Diff line
@@ -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 },