summaryrefslogtreecommitdiff
path: root/native/android/native_window_jni.cpp
diff options
context:
space:
mode:
authorJiwen 'Steve' Cai <jwcai@google.com>2017-03-31 11:19:50 -0700
committerJiwen 'Steve' Cai <jwcai@google.com>2017-04-03 19:13:31 -0700
commitd28e8283d39e7eb6c714511a0430d4cc836298cb (patch)
treee83bd8cf3a0f4d3d4eef9aa10d978b783b22414c /native/android/native_window_jni.cpp
parentb43a5305bddb81881992819a40846b52e72afd3e (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.cpp9
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);
+}