diff --git a/OAT.xml b/OAT.xml index 9c26bd51bb9fc31d2093fd64f0cb7ff3d8092bed..c7dad724bc8cd23497b6146ce50fd508d4cdb693 100644 --- a/OAT.xml +++ b/OAT.xml @@ -87,9 +87,84 @@ Note:If the text contains special characters, please escape them according to th + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/flutter/flow/layers/mask_layer.cc b/engine/flutter/flow/layers/mask_layer.cc index 837c08c4073e95fbfe345ebade2bc31c2444e3cc..a35b4072c757d4686282bee9aa904e58cb8d22d6 100644 --- a/engine/flutter/flow/layers/mask_layer.cc +++ b/engine/flutter/flow/layers/mask_layer.cc @@ -35,16 +35,19 @@ void MaskLayer::Paint(PaintContext& context) const { mask_filter.setColorFilter(filter); skCanvas->saveLayer(maskBounds, &mask_filter); if (isSvgMask_) { - SkAutoCanvasRestore maskSave(skCanvas, true); - skCanvas->translate(maskBounds.fLeft + svgX_, maskBounds.fTop + svgY_); - skCanvas->scale(scaleX_, scaleY_); - svgDom_->render(skCanvas); + SkAutoCanvasRestore maskSave(skCanvas, true); + skCanvas->translate(maskBounds.fLeft + svgX_, maskBounds.fTop + svgY_); + skCanvas->scale(scaleX_, scaleY_); + svgDom_->render(skCanvas); } else if (isGradientMask_) { - skCanvas->drawRect(maskBounds, maskPaint_); + SkAutoCanvasRestore maskSave(skCanvas, true); + skCanvas->translate(maskBounds.fLeft, maskBounds.fTop); + SkRect skRect = SkRect::MakeIWH(maskBounds.fRight - maskBounds.fLeft, maskBounds.fBottom - maskBounds.fTop); + skCanvas->drawRect(skRect, maskPaint_); } else if (isPathMask_) { - SkAutoCanvasRestore maskSave(skCanvas, true); - skCanvas->translate(maskBounds.fLeft, maskBounds.fTop); - skCanvas->drawPath(maskPath_, maskPaint_); + SkAutoCanvasRestore maskSave(skCanvas, true); + skCanvas->translate(maskBounds.fLeft, maskBounds.fTop); + skCanvas->drawPath(maskPath_, maskPaint_); } // back to mask layer diff --git a/engine/flutter/flow/ohos_layers/mask_layer.cpp b/engine/flutter/flow/ohos_layers/mask_layer.cpp index 60ee26257c111b515ae5428f003aad647735cfd7..83a91176976021e11a00a3db3a5e4344022e991d 100644 --- a/engine/flutter/flow/ohos_layers/mask_layer.cpp +++ b/engine/flutter/flow/ohos_layers/mask_layer.cpp @@ -41,7 +41,10 @@ void MaskLayer::Paint(const PaintContext& paintContext) const skCanvas_->scale(scaleX_, scaleY_); svgDom_->render(skCanvas_); } else if (isGradientMask_) { - skCanvas_->drawRect(maskBounds, maskPaint_); + SkAutoCanvasRestore maskSave(paintContext.skCanvas, true); + skCanvas_->translate(maskBounds.fLeft, maskBounds.fTop); + SkRect skRect = SkRect::MakeIWH(maskBounds.fRight - maskBounds.fLeft, maskBounds.fBottom - maskBounds.fTop); + skCanvas_->drawRect(skRect, maskPaint_); } else if (isPathMask_) { SkAutoCanvasRestore maskSave(paintContext.skCanvas, true); skCanvas_->translate(maskBounds.fLeft, maskBounds.fTop); diff --git a/engine/flutter/shell/platform/ohos/ohos_surface_software.cc b/engine/flutter/shell/platform/ohos/ohos_surface_software.cc index 67ae871a726274ff560c2f099f0b573ca8e0a1f0..694eb0ea4ec8c3d7b150b3abc3725cdf06b00f8f 100644 --- a/engine/flutter/shell/platform/ohos/ohos_surface_software.cc +++ b/engine/flutter/shell/platform/ohos/ohos_surface_software.cc @@ -173,7 +173,7 @@ void OhosSurfaceSoftware::SurfaceDrawBuffer( std::unique_ptr canvas = SkCanvas::MakeRasterDirect( native_image_info, surfaceBuffer->GetVirAddr(), - surfaceBuffer->GetSize() / requestConfig.height); + surfaceBuffer->GetBufferHandle()->stride); if (canvas) { SkBitmap bitmap;