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:
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -44,6 +44,8 @@ private:
|
||||
const SkMatrix mMatrix;
|
||||
const SkIRect mClip;
|
||||
const SkImageInfo mImageInfo;
|
||||
|
||||
bool mDrawn = false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user