mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Allow ReactChoreographer to execute a FrameCallback that removes another FrameCallback from the mCallbackQueues
Summary: This diff extends the ReactChoreographer to allow the execution of FrameCallbacks that removes another FrameCallback from the mCallbackQueues. Reviewed By: ejanzer Differential Revision: D15891759 fbshipit-source-id: 62bc2b6afac45c50ac18771b0821742b4f7fc10e
This commit is contained in:
committed by
Facebook Github Bot
parent
2bd503285e
commit
89bf3d8b38
@@ -167,10 +167,16 @@ public class ReactChoreographer {
|
||||
synchronized (mCallbackQueuesLock) {
|
||||
mHasPostedCallback = false;
|
||||
for (int i = 0; i < mCallbackQueues.length; i++) {
|
||||
int initialLength = mCallbackQueues[i].size();
|
||||
ArrayDeque<ChoreographerCompat.FrameCallback> callbackQueue = mCallbackQueues[i];
|
||||
int initialLength = callbackQueue.size();
|
||||
for (int callback = 0; callback < initialLength; callback++) {
|
||||
mCallbackQueues[i].removeFirst().doFrame(frameTimeNanos);
|
||||
mTotalCallbacks--;
|
||||
ChoreographerCompat.FrameCallback frameCallback = callbackQueue.pollFirst();
|
||||
if (frameCallback != null) {
|
||||
frameCallback.doFrame(frameTimeNanos);
|
||||
mTotalCallbacks--;
|
||||
} else {
|
||||
FLog.e(ReactConstants.TAG, "Tried to execute non-existent frame callback");
|
||||
}
|
||||
}
|
||||
}
|
||||
maybeRemoveFrameCallback();
|
||||
|
||||
Reference in New Issue
Block a user