optimize updateRootLayoutSpecs to not call setContraints if they did not change

Summary: This diff avoids calling mBinding.setConstraints when the measurespecs haven't changed

Reviewed By: shergin

Differential Revision: D14142305

fbshipit-source-id: 6770c97dcf0fb23c605a90fb6c3311d2fb771d11
This commit is contained in:
David Vacca
2019-02-22 13:51:30 -08:00
committed by Facebook Github Bot
parent 1aa279d78b
commit 8928358108
@@ -114,6 +114,8 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
private long mCommitStartTime = 0l;
private long mLayoutTime = 0l;
private long mFinishTransactionTime = 0l;
private int mLastWidthMeasureSpec = 0;
private int mLastHeightMeasureSpec = 0;
public FabricUIManager(
ReactApplicationContext reactContext,
@@ -363,13 +365,16 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
public void updateRootLayoutSpecs(
final int rootTag, final int widthMeasureSpec, final int heightMeasureSpec) {
mBinding.setConstraints(
rootTag,
getMinSize(widthMeasureSpec),
getMaxSize(widthMeasureSpec),
getMinSize(heightMeasureSpec),
getMaxSize(heightMeasureSpec));
if (mLastWidthMeasureSpec != widthMeasureSpec || mLastHeightMeasureSpec != heightMeasureSpec) {
mLastWidthMeasureSpec = widthMeasureSpec;
mLastHeightMeasureSpec = heightMeasureSpec;
mBinding.setConstraints(
rootTag,
getMinSize(widthMeasureSpec),
getMaxSize(widthMeasureSpec),
getMinSize(heightMeasureSpec),
getMaxSize(heightMeasureSpec));
}
}
public void receiveEvent(int reactTag, String eventName, @Nullable WritableMap params) {