437 Commits

Author SHA1 Message Date
Eric Jensen
c2f85397ce Mark depreciated protocols with deprivation attribute 2016-03-08 11:56:58 -08:00
Eric Jensen
3d34c177ed Flatten indentation of parameter hierarchy 2016-03-08 11:56:58 -08:00
Eric Jensen
86ccd33a84 Correct a few documentation comments for method parameters 2016-03-08 11:56:58 -08:00
Scott Goodson
5c28bb8e21 [ASScrollDirection] Ensure definitions of "positive" scroll direction in batch context match the layout controller. 2016-03-08 00:53:06 -08:00
Scott Goodson
39f5686982 Revert "[_ASAsyncTransaction] Reduce locking overhead by removing C++ stack-allocated MutexLocker objects."
Locking was not quite right here in a certain case where the transaction leaves after other references
were removed.  Will restore this optimization in the future with more time to analyze.

This reverts commit ee524f497d0692a2c0c6ea39bd3840183a00f3ed.
2016-03-07 14:46:06 -08:00
Scott Goodson
c4f6c9035b [ASDataController] If app code issues edit commands before first reload, ignore them, as UIKit will call -reloadData. 2016-03-05 20:52:00 -08:00
Scott Goodson
6a32e5ccc0 [ASDataController] If app code issues edit commands before first reload, ignore them, as UIKit will call -reloadData. 2016-03-05 20:27:36 -08:00
Scott Goodson
cc7ca4a08f [ASDataController] If app code issues edit commands before first reload, ignore them, as UIKit will call -reloadData. 2016-03-05 20:22:18 -08:00
Huy Nguyen
caddd1d287 Fix threadSafeBounds
- Bounds change set directly to _ASDisplayLayer should also be saved to threadSafeBounds
- Remove overkill _usesDisplayView flag
2016-03-03 16:18:07 -08:00
Huy Nguyen
9162d7b2df Implement thread-safe bounds and use it in ASTextNode 2016-03-02 22:42:53 -08:00
Michael Schneider
f2f1b25ae4 Rename _batchUpdateCounter to _changeSetBatchUpdateCounter in ASChangeSetDataController
Rename variable to prevent confusion between the _batchUpdateCounter variable of ASChangeSetDataController and it's superclass
2016-03-02 19:38:14 -08:00
Michael Schneider
aa2ae87c81 Add -waitUntilAllUpdatesAreCommitted to ASTableView and ASCollectionView
The API allows consumer of ASTableView or ASCollectionCiew to block execution of the main thread until all section and row updates are committed.
2016-03-02 19:38:14 -08:00
Scott Goodson
ee524f497d [_ASAsyncTransaction] Reduce locking overhead by removing C++ stack-allocated MutexLocker objects.
Support assertion to log specific return value for pthread_mutex_destroy failures.
2016-03-02 14:49:02 -08:00
Huy Nguyen
5ecc9b16a9 Remove unncessary batch layout calls in ASCollectionDataController
- These calls cause supplementary nodes to be allocated and laid out, but not inserted afterward. So the nodes are thrown away.
- Next time when it is the right time to allocate these nodes, it is the second allocation request and triggers assertion in ASIndexedNodeContext #1296.
2016-03-01 15:42:53 -08:00
appleguy
07ad27c7f6 Merge pull request #1291 from nguyenhuy/container_object
[ASDataController] Performance tuning for array enumeration, etc.
2016-02-29 14:24:17 -08:00
Huy Nguyen
6d463daac7 ASDataController improvements
- _populateFromDataSourceWithSectionIndexSet doesn't accept a mutanle array but allocate one itself.
- Remove _populateFromEntireDataSourceWithMutableContexts.
- ASIndexedNodeContext executes its block, nil out the block and return the result.
2016-02-29 14:03:40 -08:00
Michael Schneider
568aa6c2fb Update automatic range mode at the beginning of the update pass to consider new information in a possible next pass 2016-02-29 11:39:50 -08:00
Michael Schneider
aca5b14c2b Move automatic range update to a private API 2016-02-29 11:39:50 -08:00
Michael Schneider
60889f555e Add API to update the current range mode of a table or collection view range controller 2016-02-29 11:39:49 -08:00
Huy Nguyen
b098d80796 Performance improvements in ASDataController based on @Adlai-Holler comments in #1288 2016-02-29 11:36:48 -08:00
appleguy
ab920aa360 Merge pull request #1290 from nguyenhuy/container_object
Follow-up on #1288
2016-02-29 11:05:59 -08:00
Huy Nguyen
eadb6cbb0a Fix wrong memory attribute for indexPath attribute in ASIndexedNodeContext 2016-02-29 09:33:53 -08:00
appleguy
2a89c1d3d6 Merge pull request #1288 from nguyenhuy/container_object
[ASDataController] Introduce ASIndexedNodeContext for efficiency and simplicity in managing nodes, indexPaths, and their constraints.
2016-02-29 01:10:38 -08:00
Huy Nguyen
54cde1a3db Introduce ASIndexedNodeContext
- It is a container object that holds enough information to construct and measure a cell node
- All information is gathered on main thread. This allows ASDataController to capture the correct state of its data source before going to background.
2016-02-29 01:00:16 -08:00
Scott Goodson
eac85b6c9a [ASDisplayNode] Optimize -setNeedsDisplay, deep mutable array copies.
These optimizations are surprisingly impactful.  -setNeedsDisplay being called
for every node triggered cancelAsyncDisplay, locking, and memory management overhead
that is completely avoidable because Core Animation triggers first display automatically.

The mutable array copy optimizations reduced this key cost by over 10x, from 52ms to 5ms
on an iPad Air 2 / A8X with a real-world test case.
2016-02-28 20:54:56 -08:00
appleguy
b75d6627bb Revert "Revert "Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods.""" 2016-02-19 23:26:29 -08:00
appleguy
2b10d84a2b Revert "fix scheduling issue that causes collectionView to not animate" 2016-02-19 23:26:12 -08:00
appleguy
f3300ded68 Merge pull request #1246 from Xinchi/master
[ASCellNode] Support monitoring scrollViewDidScroll events / visible amount of self
2016-02-19 22:25:10 -08:00
Max Gu
115fc2b3da Adding visibility monitoring for ASTableVieww 2016-02-19 22:15:44 -08:00
Scott Goodson
a1061301e0 [ASDataController] Revert the reloadData optimizations again - need to fix apps relying on prior behavior.
The optimization seems correct now, but apps like Pinterest have some core code relying on edit operation
order that is actually not permitted by UIKit (and this diff) but were tolerated previously.  We will
re-land this once we have time to adapt the code.
2016-02-19 21:31:39 -08:00
Max Gu
fa4fc2b6ae Merge remote-tracking branch 'upstream/master' 2016-02-19 12:59:00 -08:00
Max Gu
03446d97e1 Adding scroll visibility 2016-02-19 12:46:12 -08:00
appleguy
58a3ba5e8f Revert "Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods."" 2016-02-18 23:06:14 -08:00
appleguy
32aa333c21 Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods." 2016-02-18 19:50:06 -08:00
appleguy
33d4c8693d Merge pull request #1171 from lkzhao/ASDataController-reload
[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods.
2016-02-18 17:36:14 -08:00
Luke Zhao
40791dd859 optimize reload data, reload sections, & move nodes performance & logic 2016-02-18 14:44:16 -08:00
Rahul Malik
19cc368d15 In addition to allocating nodes in the background, perform that operation concurrently in ASDataController 2016-02-17 22:30:58 -08:00
Adlai Holler
da3af0cade Remove null handling docs for nonnull argument 2016-02-16 19:47:08 -08:00
Adlai Holler
da953ac421 Provide a Synchronous Path for Loading Memory-Cached Images 2016-02-16 19:43:47 -08:00
Bin Liu
db1a91234d Improve reload handling in BatchUpdates 2016-02-16 11:04:21 -08:00
Scott Goodson
fce722b0c8 [ASDisplayNode] Allow display-scheduling method to be called concurrently. 2016-02-13 00:58:56 -08:00
Bin Liu
88ff693327 Fixes in ChangeSet and DataController 2016-02-11 23:51:32 -08:00
Garrett Moon
063cf86579 PINRemoteImage 2.0 moved its tag, who the hell are these idiots. -signed, author of PINRemoteImage 2016-02-10 18:35:29 -08:00
appleguy
07adec12a0 Merge pull request #1183 from levi/layoutTransition
[ASLayoutSpec] Add API to animate layout spec transitions, with implicit subnode management.
2016-02-10 15:30:49 -08:00
appleguy
e57f2cd00b Merge pull request #1209 from garrettmoon/addPINRemoteImageDownloader
[ASImageNode] Add PINRemoteImage as the default image downloader for both Network & Multiplex nodes.
2016-02-10 15:11:33 -08:00
Garrett Moon
e3315f4b44 Skip decoding as ASDK will handle that. 2016-02-10 13:28:30 -08:00
Garrett Moon
622c851779 Fix downloader test 2016-02-10 12:24:45 -08:00
Levi McCallum
5cf5cb8452 Delegate layout frame calculation to sublayout method 2016-02-10 11:44:12 -08:00
Bin Liu
9e53dcd402 Fix allocatedNodes Subarray to match indexPaths subarray 2016-02-10 01:35:07 -08:00
Rahul Malik
3e5daf4ccd Update data source protocols to make synchronous node creation api methods optional. 2016-02-09 22:47:43 -08:00