mirror of
https://github.com/TextureGroup/Texture.git
synced 2026-04-07 19:17:39 +00:00
Use instance lock for ASPrimitiveTraitCollection (#1442)
* Use instance lock for ASPrimitiveTraitCollection * Remove the atomic
This commit is contained in:
@@ -128,15 +128,18 @@ ASLayoutElementStyleExtensibilityForwarding
|
||||
|
||||
- (ASPrimitiveTraitCollection)primitiveTraitCollection
|
||||
{
|
||||
return _primitiveTraitCollection.load();
|
||||
AS::MutexLocker l(__instanceLock__);
|
||||
return _primitiveTraitCollection;
|
||||
}
|
||||
|
||||
- (void)setPrimitiveTraitCollection:(ASPrimitiveTraitCollection)traitCollection
|
||||
{
|
||||
if (ASPrimitiveTraitCollectionIsEqualToASPrimitiveTraitCollection(traitCollection, _primitiveTraitCollection.load()) == NO) {
|
||||
AS::UniqueLock l(__instanceLock__);
|
||||
if (ASPrimitiveTraitCollectionIsEqualToASPrimitiveTraitCollection(traitCollection, _primitiveTraitCollection) == NO) {
|
||||
_primitiveTraitCollection = traitCollection;
|
||||
ASDisplayNodeLogEvent(self, @"asyncTraitCollectionDidChange: %@", NSStringFromASPrimitiveTraitCollection(traitCollection));
|
||||
|
||||
l.unlock();
|
||||
[self asyncTraitCollectionDidChange];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,16 +106,6 @@ AS_EXTERN void ASTraitCollectionPropagateDown(id<ASLayoutElement> element, ASPri
|
||||
|
||||
@end
|
||||
|
||||
#define ASPrimitiveTraitCollectionDefaults \
|
||||
- (ASPrimitiveTraitCollection)primitiveTraitCollection\
|
||||
{\
|
||||
return _primitiveTraitCollection.load();\
|
||||
}\
|
||||
- (void)setPrimitiveTraitCollection:(ASPrimitiveTraitCollection)traitCollection\
|
||||
{\
|
||||
_primitiveTraitCollection = traitCollection;\
|
||||
}\
|
||||
|
||||
#define ASLayoutElementCollectionTableSetTraitCollection(lock) \
|
||||
- (void)setPrimitiveTraitCollection:(ASPrimitiveTraitCollection)traitCollection\
|
||||
{\
|
||||
|
||||
@@ -146,7 +146,17 @@ ASLayoutElementLayoutCalculationDefaults
|
||||
return [ASTraitCollection traitCollectionWithASPrimitiveTraitCollection:self.primitiveTraitCollection];
|
||||
}
|
||||
|
||||
ASPrimitiveTraitCollectionDefaults
|
||||
- (ASPrimitiveTraitCollection)primitiveTraitCollection
|
||||
{
|
||||
AS::MutexLocker l(__instanceLock__);
|
||||
return _primitiveTraitCollection;
|
||||
}
|
||||
|
||||
- (void)setPrimitiveTraitCollection:(ASPrimitiveTraitCollection)traitCollection
|
||||
{
|
||||
AS::MutexLocker l(__instanceLock__);
|
||||
_primitiveTraitCollection = traitCollection;
|
||||
}
|
||||
|
||||
#pragma mark - ASLayoutElementStyleExtensibility
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ static constexpr CACornerMask kASCACornerAllCorners =
|
||||
|
||||
// Layout support
|
||||
ASLayoutElementStyle *_style;
|
||||
std::atomic<ASPrimitiveTraitCollection> _primitiveTraitCollection;
|
||||
ASPrimitiveTraitCollection _primitiveTraitCollection;
|
||||
|
||||
// Layout Spec
|
||||
ASLayoutSpecBlock _layoutSpecBlock;
|
||||
|
||||
@@ -14,9 +14,12 @@
|
||||
#import <AsyncDisplayKit/ASLayoutElementStylePrivate.h>
|
||||
#import <AsyncDisplayKit/ASLayoutSpec.h>
|
||||
|
||||
@implementation _ASGalleryLayoutItem {
|
||||
std::atomic<ASPrimitiveTraitCollection> _primitiveTraitCollection;
|
||||
}
|
||||
@interface _ASGalleryLayoutItem ()
|
||||
@property ASPrimitiveTraitCollection primitiveTraitCollection;
|
||||
|
||||
@end
|
||||
|
||||
@implementation _ASGalleryLayoutItem
|
||||
|
||||
@synthesize style;
|
||||
|
||||
@@ -33,7 +36,6 @@
|
||||
}
|
||||
|
||||
ASLayoutElementStyleExtensibilityForwarding
|
||||
ASPrimitiveTraitCollectionDefaults
|
||||
|
||||
- (ASTraitCollection *)asyncTraitCollection
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user