diff options
author | Jiwen 'Steve' Cai <jwcai@google.com> | 2017-03-31 11:19:50 -0700 |
---|---|---|
committer | Jiwen 'Steve' Cai <jwcai@google.com> | 2017-04-03 19:13:31 -0700 |
commit | d28e8283d39e7eb6c714511a0430d4cc836298cb (patch) | |
tree | e83bd8cf3a0f4d3d4eef9aa10d978b783b22414c /native/android/native_window_jni.cpp | |
parent | b43a5305bddb81881992819a40846b52e72afd3e (diff) |
ANativeWindow_toSurface implementation
This enables the conversion from an ANativeWindow (created by NDK API
such as: AImageReader_create) to a Java Surface, so that developers can
hookup a Java Producer to a native buffer consumer.
This CL also introduces android_view_Surface_createFromSurface helper
function in libandroid_runtime to convert a C++ sp<Surface> to a Java
Surface object.
Bug: 36862948
Test: android.media.cts.NativeImageReaderTest
Change-Id: Ia99adb654da505ac117a8e58153ac800df23a650
Diffstat (limited to 'native/android/native_window_jni.cpp')
-rw-r--r-- | native/android/native_window_jni.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/native/android/native_window_jni.cpp b/native/android/native_window_jni.cpp index dc3040533974..859c550db94d 100644 --- a/native/android/native_window_jni.cpp +++ b/native/android/native_window_jni.cpp @@ -20,6 +20,7 @@ #include <android/native_window.h> #include <system/window.h> +#include <gui/Surface.h> #include <utils/StrongPointer.h> #include <android_runtime/android_view_Surface.h> @@ -33,3 +34,11 @@ ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface) { } return win.get(); } + +jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window) { + if (window == NULL) { + return NULL; + } + sp<Surface> surface = static_cast<Surface*>(window); + return android_view_Surface_createFromSurface(env, surface); +} |