diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/android/Android.bp | 1 | ||||
-rw-r--r-- | native/android/libandroid.map.txt | 8 | ||||
-rw-r--r-- | native/android/surface_texture.cpp | 75 | ||||
-rw-r--r-- | native/graphics/jni/Android.bp | 1 | ||||
-rw-r--r-- | native/webview/loader/loader.cpp | 27 |
5 files changed, 89 insertions, 23 deletions
diff --git a/native/android/Android.bp b/native/android/Android.bp index 00fe6382fc17..4fb5e748aaac 100644 --- a/native/android/Android.bp +++ b/native/android/Android.bp @@ -48,6 +48,7 @@ cc_library_shared { "sensor.cpp", "sharedmem.cpp", "storage_manager.cpp", + "surface_texture.cpp", "trace.cpp", ], diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 3d5ee39e37d3..d6dcd723e721 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -205,6 +205,14 @@ LIBANDROID { AStorageManager_mountObb; AStorageManager_new; AStorageManager_unmountObb; + ASurfaceTexture_acquireANativeWindow; # introduced=28 + ASurfaceTexture_attachToGLContext; # introduced=28 + ASurfaceTexture_detachFromGLContext; # introduced=28 + ASurfaceTexture_fromSurfaceTexture; # introduced=28 + ASurfaceTexture_getTimestamp; # introduced=28 + ASurfaceTexture_getTransformMatrix; # introduced=28 + ASurfaceTexture_release; # introduced=28 + ASurfaceTexture_updateTexImage; # introduced=28 ATrace_beginSection; # introduced=23 ATrace_endSection; # introduced=23 ATrace_isEnabled; # introduced=23 diff --git a/native/android/surface_texture.cpp b/native/android/surface_texture.cpp new file mode 100644 index 000000000000..b26688190ccd --- /dev/null +++ b/native/android/surface_texture.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <android/surface_texture.h> +#include <android/surface_texture_jni.h> + +#define LOG_TAG "ASurfaceTexture" + +#include <utils/Log.h> + +#include <gui/GLConsumer.h> +#include <gui/Surface.h> + +#include <android_runtime/android_graphics_SurfaceTexture.h> + +using namespace android; + +struct ASurfaceTexture { + sp<GLConsumer> consumer; + sp<IGraphicBufferProducer> producer; +}; + +ASurfaceTexture* ASurfaceTexture_fromSurfaceTexture(JNIEnv* env, jobject surfacetexture) { + if (!surfacetexture || !android_SurfaceTexture_isInstanceOf(env, surfacetexture)) { + return nullptr; + } + ASurfaceTexture* ast = new ASurfaceTexture; + ast->consumer = SurfaceTexture_getSurfaceTexture(env, surfacetexture); + ast->producer = SurfaceTexture_getProducer(env, surfacetexture); + return ast; +} + +ANativeWindow* ASurfaceTexture_acquireANativeWindow(ASurfaceTexture* st) { + sp<Surface> surface = new Surface(st->producer); + ANativeWindow* win(surface.get()); + ANativeWindow_acquire(win); + return win; +} + +void ASurfaceTexture_release(ASurfaceTexture* st) { + delete st; +} + +int ASurfaceTexture_attachToGLContext(ASurfaceTexture* st, uint32_t tex) { + return st->consumer->attachToContext(tex); +} + +int ASurfaceTexture_detachFromGLContext(ASurfaceTexture* st) { + return st->consumer->detachFromContext(); +} + +int ASurfaceTexture_updateTexImage(ASurfaceTexture* st) { + return st->consumer->updateTexImage(); +} + +void ASurfaceTexture_getTransformMatrix(ASurfaceTexture* st, float mtx[16]) { + st->consumer->getTransformMatrix(mtx); +} + +int64_t ASurfaceTexture_getTimestamp(ASurfaceTexture* st) { + return st->consumer->getTimestamp(); +} diff --git a/native/graphics/jni/Android.bp b/native/graphics/jni/Android.bp index d7695ef17a08..0704e3545b62 100644 --- a/native/graphics/jni/Android.bp +++ b/native/graphics/jni/Android.bp @@ -28,7 +28,6 @@ cc_library_shared { shared_libs: [ "libandroid_runtime", - "libskia", ], arch: { diff --git a/native/webview/loader/loader.cpp b/native/webview/loader/loader.cpp index 376dbb844906..adb371dde0fc 100644 --- a/native/webview/loader/loader.cpp +++ b/native/webview/loader/loader.cpp @@ -143,17 +143,7 @@ jboolean ReserveAddressSpace(JNIEnv*, jclass, jlong size) { return DoReserveAddressSpace(size); } -jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, - jstring relro32, jstring relro64) { -#ifdef __LP64__ - jstring lib = lib64; - jstring relro = relro64; - (void)lib32; (void)relro32; -#else - jstring lib = lib32; - jstring relro = relro32; - (void)lib64; (void)relro64; -#endif +jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro) { jboolean ret = JNI_FALSE; const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); if (lib_utf8 != NULL) { @@ -167,15 +157,8 @@ jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, return ret; } -jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro32, - jstring relro64, jobject clazzLoader) { -#ifdef __LP64__ - jstring relro = relro64; - (void)relro32; -#else - jstring relro = relro32; - (void)relro64; -#endif +jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro, + jobject clazzLoader) { jint ret = LIBLOAD_FAILED_JNI_CALL; const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); if (lib_utf8 != NULL) { @@ -196,10 +179,10 @@ const JNINativeMethod kJniMethods[] = { { "nativeReserveAddressSpace", "(J)Z", reinterpret_cast<void*>(ReserveAddressSpace) }, { "nativeCreateRelroFile", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", + "(Ljava/lang/String;Ljava/lang/String;)Z", reinterpret_cast<void*>(CreateRelroFile) }, { "nativeLoadWithRelroFile", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", reinterpret_cast<void*>(LoadWithRelroFile) }, }; |