Fabric: Introducing MountingTransaction

Summary:
`MountingTransaction` encapsulates all artifacts of `ShadowTree` commit, particularly list of mutations and meta-data.
We will rely on this heavily in the coming diffs.

Reviewed By: JoshuaGross

Differential Revision: D15021795

fbshipit-source-id: 811da7afd7b929a34a81aa66566193d46bbc34f8
This commit is contained in:
Valentin Shergin
2019-04-20 10:53:16 -07:00
committed by Facebook Github Bot
parent c257a57e8e
commit af0daaf583
16 changed files with 188 additions and 67 deletions
@@ -329,11 +329,12 @@ local_ref<JMountItem::javaobject> createDeleteMountItem(
}
void Binding::schedulerDidFinishTransaction(
const Tag rootTag,
const ShadowViewMutationList& mutations,
const long commitStartTime,
const long layoutTime) {
MountingTransaction &&mountingTransaction) {
SystraceSection s("FabricUIManager::schedulerDidFinishTransaction");
auto telemetry = mountingTransaction.getTelemetry();
auto mutations = mountingTransaction.getMutations();
std::vector<local_ref<jobject>> queue;
// Upper bound estimation of mount items to be delivered to Java side.
int size = mutations.size() * 3 + 42;
@@ -466,8 +467,8 @@ void Binding::schedulerDidFinishTransaction(
scheduleMountItems(
javaUIManager_,
batch.get(),
commitStartTime,
layoutTime,
telemetry.commitStartTime,
telemetry.layoutTime,
finishTransactionStartTime,
finishTransactionEndTime);
}
@@ -57,10 +57,7 @@ class Binding : public jni::HybridClass<Binding>, public SchedulerDelegate {
void stopSurface(jint surfaceId);
void schedulerDidFinishTransaction(
const Tag rootTag,
const ShadowViewMutationList& mutations,
const long commitStartTime,
const long layoutTime);
MountingTransaction &&mountingTransaction);
void schedulerDidRequestPreliminaryViewAllocation(
const SurfaceId surfaceId,