Swiftgram/AsyncDisplayKit/Layout/ASLayoutable.mm
Huy Nguyen 81d26994c5 Introduce ASLayoutableContext
- The struct is mapped to ID of the current thread and used by subnodes to decide whether they should proceed measurement.
2016-03-27 17:09:59 -07:00

41 lines
1.0 KiB
Plaintext

//
// ASLayoutablePrivate.mm
// AsyncDisplayKit
//
// Created by Huy Nguyen on 3/27/16.
// Copyright © 2016 Facebook. All rights reserved.
//
#import "ASLayoutablePrivate.h"
#import "pthread.h"
#import <map>
ASLayoutableContext ASLayoutableContextMake(int32_t transitionID, BOOL needsVisualizeNode)
{
struct ASLayoutableContext context;
context.transitionID = transitionID;
context.needsVisualizeNode = needsVisualizeNode;
return context;
}
static std::map<mach_port_t, ASLayoutableContext> layoutableContextMap;
static inline mach_port_t ASLayoutableGetLayoutableContextKey()
{
return pthread_mach_thread_np(pthread_self());
}
void ASLayoutableSetLayoutableContext(struct ASLayoutableContext context)
{
layoutableContextMap[ASLayoutableGetLayoutableContextKey()] = context;
}
struct ASLayoutableContext ASLayoutableGetLayoutableContext()
{
return layoutableContextMap[ASLayoutableGetLayoutableContextKey()];
}
void ASLayoutableResetLayoutableContext() {
layoutableContextMap.erase(ASLayoutableGetLayoutableContextKey());
}