Fabric: MountingCoordinator - the new way to ensure ordering of mount transaction

Summary:
TBD.
This thing fixes flickering during appearing of Fabric screens on iOS.

Reviewed By: mdvacca

Differential Revision: D15116079

fbshipit-source-id: 95ed0ba94667cad67fe4317025128d01b34f69c5
This commit is contained in:
Valentin Shergin
2019-05-03 15:11:35 -07:00
committed by Facebook Github Bot
parent 4803cab8c4
commit 0f2a09d1f6
21 changed files with 343 additions and 220 deletions
@@ -353,12 +353,18 @@ local_ref<JMountItem::javaobject> createCreateMountItem(
}
void Binding::schedulerDidFinishTransaction(
MountingTransaction &&mountingTransaction) {
MountingCoordinator::Shared const &mountingCoordinator) {
SystraceSection s("FabricUIManager::schedulerDidFinishTransaction");
auto telemetry = mountingTransaction.getTelemetry();
auto mutations = mountingTransaction.getMutations();
auto surfaceId = mountingTransaction.getSurfaceId();
auto mountingTransaction = mountingCoordinator->pullTransaction();
if (!mountingTransaction.has_value()) {
return;
}
auto telemetry = mountingTransaction->getTelemetry();
auto surfaceId = mountingTransaction->getSurfaceId();
auto &mutations = mountingTransaction->getMutations();
std::vector<local_ref<jobject>> queue;
// Upper bound estimation of mount items to be delivered to Java side.
@@ -57,7 +57,7 @@ class Binding : public jni::HybridClass<Binding>, public SchedulerDelegate {
void stopSurface(jint surfaceId);
void schedulerDidFinishTransaction(
MountingTransaction &&mountingTransaction);
MountingCoordinator::Shared const &mountingCoordinator);
void schedulerDidRequestPreliminaryViewAllocation(
const SurfaceId surfaceId,