From 4dde7d19cbe19d8082b2d86820952d9e0d3d8501 Mon Sep 17 00:00:00 2001 From: "youngmin0822.lee" Date: Mon, 9 Jul 2018 14:25:32 +0900 Subject: don't call setSize() when creating SurfaceControl When SurfaceControl is created with creating variable in updateSurface(), sizeChanged is also set. So, setSize() is called, and it blocks UI thread until the transaction is handled in SF. There is no need to resize in the creation time, because size is already set when creating SurfaceControl. Test: systrace any app including SurfaceView Change-Id: I65028b4d0d0ba2b75fbe089c98a11a56b6c08104 --- core/java/android/view/SurfaceView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 462dad3fad7a..70ceb0c117fe 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -572,7 +572,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb 0.0f, 0.0f, mScreenRect.height() / (float) mSurfaceHeight); } - if (sizeChanged) { + if (sizeChanged && !creating) { mSurfaceControl.setSize(mSurfaceWidth, mSurfaceHeight); } } finally { -- cgit v1.2.3-59-g8ed1b