Skip to content

Commit

Permalink
Use instance lock for ASPrimitiveTraitCollection (TextureGroup#1442)
Browse files Browse the repository at this point in the history
* Use instance lock for ASPrimitiveTraitCollection

* Remove the atomic
  • Loading branch information
maicki authored and hebertialmeida committed May 10, 2019
1 parent 9fed474 commit 0a94eb0
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 18 deletions.
7 changes: 5 additions & 2 deletions Source/ASDisplayNode+Layout.mm
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,18 @@ - (ASLayout *)layoutThatFits:(ASSizeRange)constrainedSize parentSize:(CGSize)par

- (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];
}
}
Expand Down
10 changes: 0 additions & 10 deletions Source/Details/ASTraitCollection.h
Original file line number Diff line number Diff line change
Expand Up @@ -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\
{\
Expand Down
12 changes: 11 additions & 1 deletion Source/Layout/ASLayoutSpec.mm
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,17 @@ - (ASTraitCollection *)asyncTraitCollection
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

Expand Down
2 changes: 1 addition & 1 deletion Source/Private/ASDisplayNodeInternal.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ static constexpr CACornerMask kASCACornerAllCorners =

// Layout support
ASLayoutElementStyle *_style;
std::atomic<ASPrimitiveTraitCollection> _primitiveTraitCollection;
ASPrimitiveTraitCollection _primitiveTraitCollection;

// Layout Spec
ASLayoutSpecBlock _layoutSpecBlock;
Expand Down
10 changes: 6 additions & 4 deletions Source/Private/_ASCollectionGalleryLayoutItem.mm
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -33,7 +36,6 @@ - (instancetype)initWithItemSize:(CGSize)itemSize collectionElement:(ASCollectio
}

ASLayoutElementStyleExtensibilityForwarding
ASPrimitiveTraitCollectionDefaults

- (ASTraitCollection *)asyncTraitCollection
{
Expand Down

0 comments on commit 0a94eb0

Please sign in to comment.