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

Commit 70fac233 authored by Miao Wang's avatar Miao Wang Committed by Gerrit Code Review
Browse files

Merge changes from topic 'USAGE_IO_INPUT'

* changes:
  [RenderScript] Update RenderScript JNI with the corresponding AllocationGetSurface driver implementation change.
  [RenderScript] Use ANativeWindow_fromSurface to get ANativeWindow from Java Surface.
parents 4903487f 1e95fc86
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \
    android_renderscript_RenderScript.cpp

LOCAL_SHARED_LIBRARIES := \
    libandroid \
    libandroid_runtime \
    libandroidfw \
    libnativehelper \
+9 −8
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@
#include "android_runtime/android_view_Surface.h"
#include "android_runtime/android_util_AssetManager.h"
#include "android/graphics/GraphicsJNI.h"
#include "android/native_window.h"
#include "android/native_window_jni.h"

#include <rsEnv.h>
#include <rsApiStubs.h>
@@ -1264,10 +1266,10 @@ nAllocationGetSurface(JNIEnv *_env, jobject _this, jlong con, jlong a)
        ALOGD("nAllocationGetSurface, con(%p), a(%p)", (RsContext)con, (RsAllocation)a);
    }

    IGraphicBufferProducer *v = (IGraphicBufferProducer *)rsAllocationGetSurface((RsContext)con,
                                                                                 (RsAllocation)a);
    sp<IGraphicBufferProducer> bp = v;
    v->decStrong(nullptr);
    ANativeWindow *anw = (ANativeWindow *)rsAllocationGetSurface((RsContext)con, (RsAllocation)a);

    sp<Surface> surface(static_cast<Surface*>(anw));
    sp<IGraphicBufferProducer> bp = surface->getIGraphicBufferProducer();

    jobject o = android_view_Surface_createFromIGraphicBufferProducer(_env, bp);
    return o;
@@ -1281,13 +1283,12 @@ nAllocationSetSurface(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobje
              (RsAllocation)alloc, (Surface *)sur);
    }

    sp<Surface> s;
    ANativeWindow *anw = nullptr;
    if (sur != 0) {
        s = android_view_Surface_getSurface(_env, sur);
        anw = ANativeWindow_fromSurface(_env, sur);
    }

    rsAllocationSetSurface((RsContext)con, (RsAllocation)alloc,
                           static_cast<ANativeWindow *>(s.get()));
    rsAllocationSetSurface((RsContext)con, (RsAllocation)alloc, anw);
}

static void