From 184d1fc05997558e5acf28e665240dfc594ef521 Mon Sep 17 00:00:00 2001 From: Levi McCallum Date: Thu, 28 Jan 2016 23:38:18 -0800 Subject: [PATCH] Switch layout flatten to BFS for node ordering --- AsyncDisplayKit/ASDisplayNode.mm | 2 +- AsyncDisplayKit/Layout/ASLayout.mm | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index cd0cb2fb96..5caf4f49b9 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -64,7 +64,7 @@ NSInteger const ASDefaultDrawingPriority = ASDefaultTransactionPriority; BOOL ASDisplayNodeSubclassOverridesSelector(Class subclass, SEL selector) { - return ASSubclassOverridesSelector([ASDisplayNode class], subclass, selector); + return ASSubclassOverridesSelector([ASDisplayNode class], subclass, selector); } void ASDisplayNodeRespectThreadAffinityOfNode(ASDisplayNode *node, void (^block)()) diff --git a/AsyncDisplayKit/Layout/ASLayout.mm b/AsyncDisplayKit/Layout/ASLayout.mm index 745b325e52..4a48501a97 100644 --- a/AsyncDisplayKit/Layout/ASLayout.mm +++ b/AsyncDisplayKit/Layout/ASLayout.mm @@ -12,7 +12,7 @@ #import "ASAssert.h" #import "ASLayoutSpecUtilities.h" #import "ASInternalHelpers.h" -#import +#import CGPoint const CGPointNull = {NAN, NAN}; @@ -71,14 +71,14 @@ extern BOOL CGPointIsNull(CGPoint point) BOOL visited; }; - // Stack of Contexts, used to keep track of sublayouts while traversing this layout in a DFS fashion. - std::stack stack; - stack.push({self, CGPointMake(0, 0), NO}); + // Stack of Contexts, used to keep track of sublayouts while traversing this layout in a BFS fashion. + std::queue queue; + queue.push({self, CGPointMake(0, 0), NO}); - while (!stack.empty()) { - Context &context = stack.top(); + while (!queue.empty()) { + Context &context = queue.front(); if (context.visited) { - stack.pop(); + queue.pop(); } else { context.visited = YES; @@ -90,7 +90,7 @@ extern BOOL CGPointIsNull(CGPoint point) } for (ASLayout *sublayout in context.layout.sublayouts) { - stack.push({sublayout, context.absolutePosition + sublayout.position, NO}); + queue.push({sublayout, context.absolutePosition + sublayout.position, NO}); } } }