diff options
Diffstat (limited to 'libs/hwui/jni/android_graphics_HardwareRenderer.cpp')
-rw-r--r-- | libs/hwui/jni/android_graphics_HardwareRenderer.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp index 9ff2f461d40d..ef3a11c13469 100644 --- a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp +++ b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp @@ -662,16 +662,18 @@ static void android_view_ThreadedRenderer_setASurfaceTransactionCallback( auto globalCallbackRef = std::make_shared<JWeakGlobalRefHolder>(vm, aSurfaceTransactionCallback); proxy->setASurfaceTransactionCallback( - [globalCallbackRef](int64_t transObj, int64_t scObj, int64_t frameNr) { + [globalCallbackRef](int64_t transObj, int64_t scObj, int64_t frameNr) -> bool { JNIEnv* env = getenv(globalCallbackRef->vm()); jobject localref = env->NewLocalRef(globalCallbackRef->ref()); if (CC_UNLIKELY(!localref)) { - return; + return false; } - env->CallVoidMethod(localref, gASurfaceTransactionCallback.onMergeTransaction, - static_cast<jlong>(transObj), static_cast<jlong>(scObj), - static_cast<jlong>(frameNr)); + jboolean ret = env->CallBooleanMethod( + localref, gASurfaceTransactionCallback.onMergeTransaction, + static_cast<jlong>(transObj), static_cast<jlong>(scObj), + static_cast<jlong>(frameNr)); env->DeleteLocalRef(localref); + return ret; }); } } @@ -931,6 +933,11 @@ static void android_view_ThreadedRenderer_setupShadersDiskCache(JNIEnv* env, job env->ReleaseStringUTFChars(skiaDiskCachePath, skiaCacheArray); } +static jboolean android_view_ThreadedRenderer_isWebViewOverlaysEnabled(JNIEnv* env, jobject clazz) { + // this value is valid only after loadSystemProperties() is called + return Properties::enableWebViewOverlays; +} + // ---------------------------------------------------------------------------- // JNI Glue // ---------------------------------------------------------------------------- @@ -1023,6 +1030,8 @@ static const JNINativeMethod gMethods[] = { (void*)android_view_ThreadedRenderer_setDisplayDensityDpi}, {"nInitDisplayInfo", "(IIFIJJ)V", (void*)android_view_ThreadedRenderer_initDisplayInfo}, {"preload", "()V", (void*)android_view_ThreadedRenderer_preload}, + {"isWebViewOverlaysEnabled", "()Z", + (void*)android_view_ThreadedRenderer_isWebViewOverlaysEnabled}, }; static JavaVM* mJvm = nullptr; @@ -1064,7 +1073,7 @@ int register_android_view_ThreadedRenderer(JNIEnv* env) { jclass aSurfaceTransactionCallbackClass = FindClassOrDie(env, "android/graphics/HardwareRenderer$ASurfaceTransactionCallback"); gASurfaceTransactionCallback.onMergeTransaction = - GetMethodIDOrDie(env, aSurfaceTransactionCallbackClass, "onMergeTransaction", "(JJJ)V"); + GetMethodIDOrDie(env, aSurfaceTransactionCallbackClass, "onMergeTransaction", "(JJJ)Z"); jclass prepareSurfaceControlForWebviewCallbackClass = FindClassOrDie( env, "android/graphics/HardwareRenderer$PrepareSurfaceControlForWebviewCallback"); |