Skip to content

Commit

Permalink
Merge remote-tracking branch 'facebook/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
hannahmbanana committed Apr 19, 2016
2 parents 83a3a83 + 103506b commit 2658cf4
Show file tree
Hide file tree
Showing 70 changed files with 2,095 additions and 536 deletions.
73 changes: 60 additions & 13 deletions AsyncDisplayKit.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion AsyncDisplayKit/ASControlNode.mm
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ @implementation ASControlNode

#pragma mark - Lifecycle

- (id)init
- (instancetype)init
{
if (!(self = [super init]))
return nil;
Expand Down
4 changes: 2 additions & 2 deletions AsyncDisplayKit/ASDisplayNode+Subclasses.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,15 @@ NS_ASSUME_NONNULL_BEGIN
* @discussion Gives a chance for subclasses to perform actions after the subclass and superclass have finished laying
* out.
*/
- (void)layoutDidFinish;
- (void)layoutDidFinish ASDISPLAYNODE_REQUIRES_SUPER;

/**
* @abstract Called on a background thread if !isNodeLoaded - called on the main thread if isNodeLoaded.
*
* @discussion When the .calculatedLayout property is set to a new ASLayout (directly from -calculateLayoutThatFits: or
* calculated via use of -layoutSpecThatFits:), subclasses may inspect it here.
*/
- (void)calculatedLayoutDidChange;
- (void)calculatedLayoutDidChange ASDISPLAYNODE_REQUIRES_SUPER;

/** @name Layout calculation */

Expand Down
58 changes: 11 additions & 47 deletions AsyncDisplayKit/ASDisplayNode.mm
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ - (void)_initializeInstance
_environmentState = ASEnvironmentStateMakeDefault();
}

- (id)init
- (instancetype)init
{
if (!(self = [super init]))
return nil;
Expand All @@ -266,7 +266,7 @@ - (id)init
return self;
}

- (id)initWithViewClass:(Class)viewClass
- (instancetype)initWithViewClass:(Class)viewClass
{
if (!(self = [super init]))
return nil;
Expand All @@ -280,7 +280,7 @@ - (id)initWithViewClass:(Class)viewClass
return self;
}

- (id)initWithLayerClass:(Class)layerClass
- (instancetype)initWithLayerClass:(Class)layerClass
{
if (!(self = [super init]))
return nil;
Expand All @@ -295,12 +295,12 @@ - (id)initWithLayerClass:(Class)layerClass
return self;
}

- (id)initWithViewBlock:(ASDisplayNodeViewBlock)viewBlock
- (instancetype)initWithViewBlock:(ASDisplayNodeViewBlock)viewBlock
{
return [self initWithViewBlock:viewBlock didLoadBlock:nil];
}

- (id)initWithViewBlock:(ASDisplayNodeViewBlock)viewBlock didLoadBlock:(ASDisplayNodeDidLoadBlock)didLoadBlock
- (instancetype)initWithViewBlock:(ASDisplayNodeViewBlock)viewBlock didLoadBlock:(ASDisplayNodeDidLoadBlock)didLoadBlock
{
if (!(self = [super init]))
return nil;
Expand All @@ -315,12 +315,12 @@ - (id)initWithViewBlock:(ASDisplayNodeViewBlock)viewBlock didLoadBlock:(ASDispla
return self;
}

- (id)initWithLayerBlock:(ASDisplayNodeLayerBlock)layerBlock
- (instancetype)initWithLayerBlock:(ASDisplayNodeLayerBlock)layerBlock
{
return [self initWithLayerBlock:layerBlock didLoadBlock:nil];
}

- (id)initWithLayerBlock:(ASDisplayNodeLayerBlock)layerBlock didLoadBlock:(ASDisplayNodeDidLoadBlock)didLoadBlock
- (instancetype)initWithLayerBlock:(ASDisplayNodeLayerBlock)layerBlock didLoadBlock:(ASDisplayNodeDidLoadBlock)didLoadBlock
{
if (!(self = [super init]))
return nil;
Expand Down Expand Up @@ -681,6 +681,10 @@ - (void)transitionLayoutWithSizeRange:(ASSizeRange)constrainedSize
});

void (^transitionBlock)() = ^{
if ([self _shouldAbortTransitionWithID:transitionID]) {
return;
}

ASLayout *newLayout;
{
ASLayoutableSetCurrentContext(ASLayoutableContextMake(transitionID, NO));
Expand Down Expand Up @@ -2599,19 +2603,6 @@ - (void)setInHierarchy:(BOOL)inHierarchy
_flags.isInHierarchy = inHierarchy;
}

+ (dispatch_queue_t)asyncSizingQueue
{
static dispatch_queue_t asyncSizingQueue = NULL;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
asyncSizingQueue = dispatch_queue_create("org.AsyncDisplayKit.ASDisplayNode.asyncSizingQueue", DISPATCH_QUEUE_CONCURRENT);
// we use the highpri queue to prioritize UI rendering over other async operations
dispatch_set_target_queue(asyncSizingQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));
});

return asyncSizingQueue;
}

- (BOOL)_hasTransitionsInProgress
{
ASDN::MutexLocker l(_propertyLock);
Expand Down Expand Up @@ -2639,33 +2630,6 @@ - (int32_t)_newTransitionID
return [_transitionSentinel increment];
}

// Calls completion with nil to indicated cancellation
- (void)_enqueueAsyncSizingWithSentinel:(ASSentinel *)sentinel completion:(void(^)(ASDisplayNode *n))completion;
{
int32_t sentinelValue = sentinel.value;

// This is what we're going to use for sizing. Hope you like it :D
CGRect bounds = self.bounds;

dispatch_async([[self class] asyncSizingQueue], ^{
// Check sentinel before, bail early
if (sentinel.value != sentinelValue)
return dispatch_async(dispatch_get_main_queue(), ^{ completion(nil); });

[self measure:bounds.size];

// Check sentinel after, bail early
if (sentinel.value != sentinelValue)
return dispatch_async(dispatch_get_main_queue(), ^{ completion(nil); });

// Success; not cancelled
dispatch_async(dispatch_get_main_queue(), ^{
completion(self);
});
});

}

- (id<ASLayoutable>)finalLayoutable
{
return self;
Expand Down
12 changes: 6 additions & 6 deletions AsyncDisplayKit/ASDisplayNodeExtras.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,12 @@ extern void ASDisplayNodePerformBlockOnEverySubnode(ASDisplayNode *node, void(^b
/**
Given a display node, traverses up the layer tree hierarchy, returning the first display node that passes block.
*/
extern id _Nullable ASDisplayNodeFindFirstSupernode(ASDisplayNode * _Nullable node, BOOL (^block)(ASDisplayNode *node));
extern ASDisplayNode * _Nullable ASDisplayNodeFindFirstSupernode(ASDisplayNode * _Nullable node, BOOL (^block)(ASDisplayNode *node));

/**
Given a display node, traverses up the layer tree hierarchy, returning the first display node of kind class.
*/
extern id _Nullable ASDisplayNodeFindFirstSupernodeOfClass(ASDisplayNode *start, Class c);
extern __kindof ASDisplayNode * _Nullable ASDisplayNodeFindFirstSupernodeOfClass(ASDisplayNode *start, Class c);

/**
* Given two nodes, finds their most immediate common parent. Used for geometry conversion methods.
Expand All @@ -132,22 +132,22 @@ extern NSArray<ASDisplayNode *> *ASDisplayNodeFindAllSubnodes(ASDisplayNode *sta
/**
Given a display node, traverses down the node hierarchy, returning all the display nodes of kind class.
*/
extern NSArray<ASDisplayNode *> *ASDisplayNodeFindAllSubnodesOfClass(ASDisplayNode *start, Class c);
extern NSArray<__kindof ASDisplayNode *> *ASDisplayNodeFindAllSubnodesOfClass(ASDisplayNode *start, Class c);

/**
Given a display node, traverses down the node hierarchy, returning the depth-first display node, including the start node that pass the block.
*/
extern __kindof ASDisplayNode * ASDisplayNodeFindFirstNode(ASDisplayNode *start, BOOL (^block)(ASDisplayNode *node));
extern __kindof ASDisplayNode * _Nullable ASDisplayNodeFindFirstNode(ASDisplayNode *start, BOOL (^block)(ASDisplayNode *node));

/**
Given a display node, traverses down the node hierarchy, returning the depth-first display node, excluding the start node, that pass the block
*/
extern __kindof ASDisplayNode * ASDisplayNodeFindFirstSubnode(ASDisplayNode *start, BOOL (^block)(ASDisplayNode *node));
extern __kindof ASDisplayNode * _Nullable ASDisplayNodeFindFirstSubnode(ASDisplayNode *start, BOOL (^block)(ASDisplayNode *node));

/**
Given a display node, traverses down the node hierarchy, returning the depth-first display node of kind class.
*/
extern __kindof ASDisplayNode * ASDisplayNodeFindFirstSubnodeOfClass(ASDisplayNode *start, Class c);
extern __kindof ASDisplayNode * _Nullable ASDisplayNodeFindFirstSubnodeOfClass(ASDisplayNode *start, Class c);

extern UIColor *ASDisplayNodeDefaultPlaceholderColor();
extern UIColor *ASDisplayNodeDefaultTintColor();
Expand Down
12 changes: 6 additions & 6 deletions AsyncDisplayKit/ASDisplayNodeExtras.mm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ extern void ASDisplayNodePerformBlockOnEverySubnode(ASDisplayNode *node, void(^b
}
}

id ASDisplayNodeFindFirstSupernode(ASDisplayNode *node, BOOL (^block)(ASDisplayNode *node))
ASDisplayNode *ASDisplayNodeFindFirstSupernode(ASDisplayNode *node, BOOL (^block)(ASDisplayNode *node))
{
CALayer *layer = node.layer;

Expand All @@ -105,7 +105,7 @@ id ASDisplayNodeFindFirstSupernode(ASDisplayNode *node, BOOL (^block)(ASDisplayN
return nil;
}

id ASDisplayNodeFindFirstSupernodeOfClass(ASDisplayNode *start, Class c)
__kindof ASDisplayNode *ASDisplayNodeFindFirstSupernodeOfClass(ASDisplayNode *start, Class c)
{
return ASDisplayNodeFindFirstSupernode(start, ^(ASDisplayNode *n) {
return [n isKindOfClass:c];
Expand Down Expand Up @@ -156,7 +156,7 @@ static void _ASDisplayNodeFindAllSubnodes(NSMutableArray *array, ASDisplayNode *
return list;
}

extern NSArray<ASDisplayNode *> *ASDisplayNodeFindAllSubnodesOfClass(ASDisplayNode *start, Class c)
extern NSArray<__kindof ASDisplayNode *> *ASDisplayNodeFindAllSubnodesOfClass(ASDisplayNode *start, Class c)
{
return ASDisplayNodeFindAllSubnodes(start, ^(ASDisplayNode *n) {
return [n isKindOfClass:c];
Expand All @@ -180,17 +180,17 @@ static void _ASDisplayNodeFindAllSubnodes(NSMutableArray *array, ASDisplayNode *
return nil;
}

extern __kindof ASDisplayNode * ASDisplayNodeFindFirstNode(ASDisplayNode *startNode, BOOL (^block)(ASDisplayNode *node))
extern __kindof ASDisplayNode *ASDisplayNodeFindFirstNode(ASDisplayNode *startNode, BOOL (^block)(ASDisplayNode *node))
{
return _ASDisplayNodeFindFirstNode(startNode, YES, block);
}

extern __kindof ASDisplayNode * ASDisplayNodeFindFirstSubnode(ASDisplayNode *startNode, BOOL (^block)(ASDisplayNode *node))
extern __kindof ASDisplayNode *ASDisplayNodeFindFirstSubnode(ASDisplayNode *startNode, BOOL (^block)(ASDisplayNode *node))
{
return _ASDisplayNodeFindFirstNode(startNode, NO, block);
}

extern __kindof ASDisplayNode * ASDisplayNodeFindFirstSubnodeOfClass(ASDisplayNode *start, Class c)
extern __kindof ASDisplayNode *ASDisplayNodeFindFirstSubnodeOfClass(ASDisplayNode *start, Class c)
{
return ASDisplayNodeFindFirstSubnode(start, ^(ASDisplayNode *n) {
return [n isKindOfClass:c];
Expand Down
15 changes: 15 additions & 0 deletions AsyncDisplayKit/ASImageNode+AnimatedImage.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// ASImageNode+AnimatedImage.h
// AsyncDisplayKit
//
// Created by Garrett Moon on 3/22/16.
// Copyright © 2016 Facebook. All rights reserved.
//

#import "ASImageNode.h"
#import "ASImageProtocols.h"

@interface ASImageNode (AnimatedImage)
@property (atomic, assign) BOOL animatedImagePaused;
@property (nullable, atomic, strong) id <ASAnimatedImageProtocol> animatedImage;
@end
Loading

0 comments on commit 2658cf4

Please sign in to comment.