Merge "Reduce jittering while dragging divider bar" into tm-dev

This commit is contained in:
Jerry Chang
2022-06-14 01:53:35 +00:00
committed by Android (Google) Code Review

View File

@@ -76,6 +76,7 @@ import android.os.IBinder;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.util.Slog; import android.util.Slog;
import android.view.Choreographer;
import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationFinishedCallback;
import android.view.IRemoteAnimationRunner; import android.view.IRemoteAnimationRunner;
import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationAdapter;
@@ -1124,6 +1125,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mDividerFadeInAnimator.cancel(); mDividerFadeInAnimator.cancel();
return; return;
} }
transaction.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId());
transaction.setAlpha(dividerLeash, (float) animation.getAnimatedValue()); transaction.setAlpha(dividerLeash, (float) animation.getAnimatedValue());
transaction.apply(); transaction.apply();
}); });
@@ -1216,17 +1218,23 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override @Override
public void onLayoutPositionChanging(SplitLayout layout) { public void onLayoutPositionChanging(SplitLayout layout) {
mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t, false /* applyResizingOffset */)); final SurfaceControl.Transaction t = mTransactionPool.acquire();
t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId());
updateSurfaceBounds(layout, t, false /* applyResizingOffset */);
t.apply();
mTransactionPool.release(t);
} }
@Override @Override
public void onLayoutSizeChanging(SplitLayout layout) { public void onLayoutSizeChanging(SplitLayout layout) {
mSyncQueue.runInSync(t -> { final SurfaceControl.Transaction t = mTransactionPool.acquire();
setResizingSplits(true /* resizing */); t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId());
updateSurfaceBounds(layout, t, true /* applyResizingOffset */); setResizingSplits(true /* resizing */);
mMainStage.onResizing(getMainStageBounds(), t); updateSurfaceBounds(layout, t, true /* applyResizingOffset */);
mSideStage.onResizing(getSideStageBounds(), t); mMainStage.onResizing(getMainStageBounds(), t);
}); mSideStage.onResizing(getSideStageBounds(), t);
t.apply();
mTransactionPool.release(t);
} }
@Override @Override