Do not call postDrawVk if did not call drawVk

Reland enable vulkan webview functor

Bug: 123877499
Bug: 115613038
Test: Gmail in bug no longer crashing.
Change-Id: I7df761a4691ceaa6c2a02b256d61554e57139409
This commit is contained in:
Bo Liu
2019-02-04 14:55:02 -08:00
parent d58aa257cd
commit d25d1345a3
4 changed files with 7 additions and 7 deletions

View File

@@ -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());
}

View File

@@ -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;

View File

@@ -44,6 +44,8 @@ private:
const SkMatrix mMatrix;
const SkIRect mClip;
const SkImageInfo mImageInfo;
bool mDrawn = false;
};
/**

View File

@@ -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;