mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Fix crash on ImageFilter.blur with very small sigma (flutter/engine#35890)
This commit is contained in:
parent
40eb019805
commit
ce10462a1d
@ -712,7 +712,11 @@ class DlLocalMatrixImageFilter final : public DlImageFilter {
|
||||
if (!image_filter_) {
|
||||
return nullptr;
|
||||
}
|
||||
return image_filter_->skia_object()->makeWithLocalMatrix(matrix_);
|
||||
sk_sp<SkImageFilter> skia_object = image_filter_->skia_object();
|
||||
if (!skia_object) {
|
||||
return nullptr;
|
||||
}
|
||||
return skia_object->makeWithLocalMatrix(matrix_);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
@ -846,6 +846,16 @@ TEST(DisplayListImageFilter, LocalImageFilterBounds) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(DisplayListImageFilter, LocalImageSkiaNull) {
|
||||
auto blur_filter =
|
||||
std::make_shared<DlBlurImageFilter>(0, 0, DlTileMode::kClamp);
|
||||
DlLocalMatrixImageFilter dl_local_matrix_filter(SkMatrix::RotateDeg(45),
|
||||
blur_filter);
|
||||
// With sigmas set to zero on the blur filter, Skia will return a null filter.
|
||||
// The local matrix filter should return nullptr instead of crashing.
|
||||
ASSERT_EQ(dl_local_matrix_filter.skia_object(), nullptr);
|
||||
}
|
||||
|
||||
TEST(DisplayListImageFilter, UnknownEquals) {
|
||||
sk_sp<SkImageFilter> sk_filter =
|
||||
SkImageFilters::Blur(5.0, 6.0, SkTileMode::kRepeat, nullptr);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user