From 6ce9ffb2cdcfe69cb01ec8f756380c3438f6f471 Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Mon, 1 Jun 2020 11:02:19 -0700 Subject: SurfaceView: Lock mDeferredDestroySurfaceControl Since mDeferredDestroySurfaceControl is the same underlying object as mSurfaceControl we also need to hold the mSurfaceControlLock when writing to it. Bug: 157657896 Test: Existing tests pass Change-Id: Ie0da3ed5d94c7aae2593423fa2767dbc902da4c8 --- core/java/android/view/SurfaceView.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index bd811fc1f052..a954f3631a01 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -1200,8 +1200,10 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } if (mDeferredDestroySurfaceControl != null) { - mTmpTransaction.remove(mDeferredDestroySurfaceControl).apply(); - mDeferredDestroySurfaceControl = null; + synchronized (mSurfaceControlLock) { + mTmpTransaction.remove(mDeferredDestroySurfaceControl).apply(); + mDeferredDestroySurfaceControl = null; + } } runOnUiThread(this::performDrawFinished); -- cgit v1.2.3-59-g8ed1b