diff options
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/VkFunctorDrawable.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/VkFunctorDrawable.h | 2 | ||||
-rw-r--r-- | native/webview/plat_support/draw_functor.cpp | 3 |
4 files changed, 7 insertions, 7 deletions
diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp index b67aea224055..d9456355cb88 100644 --- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp +++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp @@ -142,10 +142,8 @@ void SkiaRecordingCanvas::callDrawGLFunction(Functor* functor, void SkiaRecordingCanvas::drawWebViewFunctor(int functor) { FunctorDrawable* functorDrawable; if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) { - // TODO(cblume) use VkFunctorDrawable instead of VkInteropFunctorDrawable here when the - // interop is disabled. functorDrawable = - mDisplayList->allocateDrawable<VkInteropFunctorDrawable>(functor, asSkCanvas()); + mDisplayList->allocateDrawable<VkFunctorDrawable>(functor, asSkCanvas()); } else { functorDrawable = mDisplayList->allocateDrawable<GLFunctorDrawable>(functor, asSkCanvas()); } diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp index 2f8d381f15f5..fe2d41ef630b 100644 --- a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp +++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp @@ -43,7 +43,9 @@ VkFunctorDrawHandler::VkFunctorDrawHandler(sp<WebViewFunctor::Handle> functor_ha , mImageInfo(image_info) {} VkFunctorDrawHandler::~VkFunctorDrawHandler() { - mFunctorHandle->postDrawVk(); + if (mDrawn) { + mFunctorHandle->postDrawVk(); + } } void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) { @@ -77,6 +79,7 @@ void VkFunctorDrawHandler::draw(const GrBackendDrawableInfo& info) { params.format = vulkan_info.fFormat; mFunctorHandle->drawVk(params); + mDrawn = true; vulkan_info.fDrawBounds->offset.x = mClip.fLeft; vulkan_info.fDrawBounds->offset.y = mClip.fTop; diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.h b/libs/hwui/pipeline/skia/VkFunctorDrawable.h index 1a53c8fd55db..d3f97773b91d 100644 --- a/libs/hwui/pipeline/skia/VkFunctorDrawable.h +++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.h @@ -44,6 +44,8 @@ private: const SkMatrix mMatrix; const SkIRect mClip; const SkImageInfo mImageInfo; + + bool mDrawn = false; }; /** diff --git a/native/webview/plat_support/draw_functor.cpp b/native/webview/plat_support/draw_functor.cpp index 6deb47f09347..e43a60c3f396 100644 --- a/native/webview/plat_support/draw_functor.cpp +++ b/native/webview/plat_support/draw_functor.cpp @@ -177,9 +177,6 @@ int CreateFunctor(void* data, AwDrawFnFunctorCallbacks* functor_callbacks) { webview_functor_callbacks.vk.initialize = &initializeVk; webview_functor_callbacks.vk.draw = &drawVk; webview_functor_callbacks.vk.postDraw = &postDrawVk; - // TODO(boliu): Remove this once SkiaRecordingCanvas::drawWebViewFunctor - // no longer uses GL interop. - webview_functor_callbacks.gles.draw = &draw_gl; break; } callbacks_initialized = true; |