From aa7505dfc53a3123fae914db1499525494c7304e Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 16 May 2018 14:37:02 -0700 Subject: [PATCH] Follow up to Ia7900e753b29187a7a7b81f393666687e8b8e04b Test: Open notification Bug: 78611607 Change-Id: I608d4b619d5e236c1c874c8c7613f35574d45fd4 --- .../system/SyncRtSurfaceTransactionApplier.java | 60 ++++++++-------------- 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplier.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplier.java index b08d4d417ff7..1c2831bd13f8 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplier.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplier.java @@ -30,7 +30,6 @@ import java.util.ArrayList; */ public class SyncRtSurfaceTransactionApplier { - private final Object mLock = new Object(); private final Surface mTargetSurface; private final ViewRootImpl mTargetViewRootImpl; private final float[] mTmpFloat9 = new float[9]; @@ -46,48 +45,31 @@ public class SyncRtSurfaceTransactionApplier { /** * Schedules applying surface parameters on the next frame. * - * @param params The parameters for the surface to apply. - */ - public void scheduleApply(SurfaceParams params) { - ArrayList list = new ArrayList<>(1); - list.add(params); - scheduleApply(list); - } - - /** - * Schedules applying surface parameters on the next frame. - * * @param params The surface parameters to apply. DO NOT MODIFY the list after passing into * this method to avoid synchronization issues. */ - public void scheduleApply(ArrayList params) { - if (mTargetViewRootImpl != null) { - - // Acquire mLock to establish a happens-before relationship to ensure the other thread - // sees the surface parameters. - synchronized (mLock) { - mTargetViewRootImpl.registerRtFrameCallback(frame -> { - synchronized (mLock) { - if (mTargetSurface == null || !mTargetSurface.isValid()) { - return; - } - SurfaceControl.Transaction t = new SurfaceControl.Transaction(); - for (int i = params.size() - 1; i >= 0; i--) { - SurfaceParams surfaceParams = params.get(i); - SurfaceControl surface = surfaceParams.surface; - t.deferTransactionUntilSurface(surface, mTargetSurface, frame); - t.setMatrix(surface, surfaceParams.matrix, mTmpFloat9); - t.setWindowCrop(surface, surfaceParams.windowCrop); - t.setAlpha(surface, surfaceParams.alpha); - t.setLayer(surface, surfaceParams.layer); - t.show(surface); - } - t.setEarlyWakeup(); - t.apply(); - } - }); - } + public void scheduleApply(SurfaceParams... params) { + if (mTargetViewRootImpl == null) { + return; } + mTargetViewRootImpl.registerRtFrameCallback(frame -> { + if (mTargetSurface == null || !mTargetSurface.isValid()) { + return; + } + SurfaceControl.Transaction t = new SurfaceControl.Transaction(); + for (int i = params.length - 1; i >= 0; i--) { + SurfaceParams surfaceParams = params[i]; + SurfaceControl surface = surfaceParams.surface; + t.deferTransactionUntilSurface(surface, mTargetSurface, frame); + t.setMatrix(surface, surfaceParams.matrix, mTmpFloat9); + t.setWindowCrop(surface, surfaceParams.windowCrop); + t.setAlpha(surface, surfaceParams.alpha); + t.setLayer(surface, surfaceParams.layer); + t.show(surface); + } + t.setEarlyWakeup(); + t.apply(); + }); } public static class SurfaceParams { -- 2.11.0