* fix SIMULATE_WEB_RESPONSE not imported #449
* Fix to make rangeMode update in right time
* Match interface update closer to UIKit.
* allow the correct exiting sequence for thrashing
* refactor
* Fork dealloc queue in an experiment
* Fix and put back
* Use the right selector
* Go simpler
* Clarify name
* Type inference
* Use CFTypeRefs like a boss
* Improve comments
* License header
* [ASNetworkImageNodeTests] Add defaultImage test and improve image test. #trivial
* [ASImageNode+AnimatedImage] Fix early return when animatedImage is nil in setAnimatedImage. #trivial
* fix SIMULATE_WEB_RESPONSE not imported #449
* Fix to make rangeMode update in right time
* Fix pager node for interface coalescing
* Fix typo
* change log
* [ASTextNode2] Upgrade lock safety by protecting all ivars (including rarely-changed ones).
Although I don't know of any specific crashes caused by this, I think we should
lock all properties by default. There are also some indications of premature
optimization in keeping lock scope small, where it is actually important to
have transactional integrity, and also where the ASDisplayNode base class is
otherwise going to repeatedly re-lock the object anyway.
I think this will remain pretty efficient, especially with os_unfair_lock enabled.
* Use compare-assign macros
Because multiple threads can enter this allocWithZone: method around the same time, it is possible for one of them to setSuperclass first, and then the second thread would get stuck in an infinite loop. When climbing the inheritance heirarchy, ASTextNode2 would be encountered by this second thread, and it would continue until reaching c == Nil. Since there was no case to catch this, an infinite loop would result. Then the main thread can be deadlocked if a method like waitUntilAllUpdatesAreProcessed is called on ASCollectionView.
* fix SIMULATE_WEB_RESPONSE not imported #449
* Fix to make rangeMode update in right time
* This is for cases when CollectionNode is created in cell of another collectionNode, the interfaceState(say didEnterVisible) is not called as expected.
It's because interfaceCoalescing alter the time line and cause RangeController update before actual interface applied.
* [Issue 838] Update ASCeilPixelValue and ASRoundPixelValue
Layouts can come back for 3x devices as a repeating decimal. Floats/doubles have a hard time representing these values and often the last digit or two will be garbage. This garbage can result in unexpected values from `ceil` or `round`. I try to fix this by subtracting `FLT_EPSILON` from the value before calling `ceil` or `round`
https://github.com/TextureGroup/Texture/issues/838
* addressed comments on the pr
* fix SIMULATE_WEB_RESPONSE not imported #449
* Fix to make rangeMode update in right time
* disable interface coalescing and fix tests
* Revert to before coalescing for ease of reading
* refactor, make min change
* refactor
* add comments
* Add change log
* Introduce ASRecursiveUnfairLock and tests
* Document it and put underscores to scare people away
* Increment changelog
* Integrate it with ASDN::Mutex behind experiment
* Rename the experiment
* Love these license headers oh so much
* Move internal header because we have to
* Address Jon's feedback
* [ASDisplayNode] Add safeAreaInsets, layoutMargins and related properties to ASDisplayNode
* Add layoutMargins bridged to the underlying view
* Add safeAreaInsets bridged to the underlying view
* Add fallback calculation of safeAreaInsets for old iOS versions
* Add automaticallyRelayoutOnSafeAreaChanges and automaticallyRelayoutOnLayoutMarginsChanges properties
* Add additionalSafeAreaInsets property to ASViewController for compatibility with old iOS versions
* Provide safeAreaInsets for layer-backed nodes.
This also fixes tests.
* Fix crash when insetsLayoutMarginsFromSafeArea is set from a background thread
* Changes requested at code review:
* Update documentation for layoutMargins and safeAreaInsets properties. Suggest that users set the automaticallyRelayout* flags to ensure that their layout is synchronized to the margin's values.
* Fix accessing ASDisplayNode internal structures without a lock.
* Add shortcut in -[ASDisplayNode _fallbackUpdateSafeAreaOnChildren] to skip a child when possible.
* Add shortcut in ASViewController to avoid fallback safe area insets recalculation in iOS 11. Fix fallback safe area insets recalculation when the additionalSafeAreaInsets are set.
* Add debug check that a view controller's node is never reused without its view controller, so the viewControllerRoot flag value is always consistent.
* Use getters instead of reading ivars directly in -layoutMarginsDidChange and -safeAreaInsetsDidChange.
* Minor change in CHANGELOG
* Minor change in ASDisplayNodeTests.mm
* Update the dangerfile
* Make a trivial change to test new dangerfile
* Try out the new value with another trivial change
* Add a configuration API to make a unified place for pulling config from clients safely
* Specify properties for delegate
* Finish removing text experiment global enable
* Generate the config file
* Clean up configuration to fix tests
* Work on making it serializable
* Finish it up
* Fix example code
* Update sample project
* Clean up a few things
* Align with new project order
* Make it faster and update license header
* Add an option to specify your config at compile time
* Update another license header
* Add a version field, and bring interface state coalescing into configuration
* Update CA queue code
* Update CATransactionQueue tests
* Turn transaction queue on by default (for now, see comment)
* Update the tests
* Update the tests AGAIN
* Remove unused ordered set
* Make display node, layout spec, and style conform to NSLocking so that users/subclasses can access their locks
* Update the changelog
* Align slashes
* Put it back, when we're in ASDisplayNode
* Go a little further
* Put back the changes I didn't mean to commit
* Kick the CI
* Fix yoga build
* Put back non-locking change
* Address comments from Scott
* Order items in XCode project navigator by name
It is a bit hard to find file in folders with long list of file, for example Tests. Sorting items by name makes this a bit easier and brings order.
If there are child folders, they are ordered before files. Keeping folders sorted by name may be reasonable alternative as well.
* Re-sort after merge.
ASNetworkImageLoadInfo.h is still here, not sure why showing removed in this commit. Had this file duplicated reference previously?