From 4d6532ccc8e72bb4a48cc4c8287fc27626c137e2 Mon Sep 17 00:00:00 2001 From: vovasty Date: Fri, 30 Aug 2019 12:45:58 -0700 Subject: [PATCH] use lock to avoid crash when image might be changed during the trait collection change (#1651) --- Source/ASImageNode.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/ASImageNode.mm b/Source/ASImageNode.mm index 9f670c15..05d1e3ac 100644 --- a/Source/ASImageNode.mm +++ b/Source/ASImageNode.mm @@ -756,6 +756,7 @@ static ASWeakMap *cache = nil; [super asyncTraitCollectionDidChangeWithPreviousTraitCollection:previousTraitCollection]; if (AS_AVAILABLE_IOS_TVOS(12, 10)) { + __instanceLock__.lock(); // update image if userInterfaceStyle was changed (dark mode) if (_image != nil && self.primitiveTraitCollection.userInterfaceStyle != previousTraitCollection.userInterfaceStyle) { UITraitCollection *tc = [UITraitCollection traitCollectionWithUserInterfaceStyle:self.primitiveTraitCollection.userInterfaceStyle]; @@ -764,9 +765,8 @@ static ASWeakMap *cache = nil; if ( updatedImage != nil ) { _image = updatedImage; } - // trigger needs display anyway, cause image might be dynamic itself (e.g. dynamic tint color) - [self setNeedsDisplay]; } + __instanceLock__.unlock(); } }