From a35993b83fa98037755d11c19bac53c546f744bd Mon Sep 17 00:00:00 2001 From: Bin Zhai Date: Tue, 9 May 2023 17:08:54 +0800 Subject: [PATCH] Create new SurfaceControl.Transaction when old closed The SurfaceControl.Transaction will be closed after use. If TransactionCommittedListener can not be called in time, sytem_server will crash when merge Transaction. Bug: 281823781 Test: run monkey test pass Change-Id: I68d9809aaebc3a217b0c5287323c65c4f9fd05b9 --- .../core/java/com/android/server/wm/BLASTSyncEngine.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/BLASTSyncEngine.java b/services/core/java/com/android/server/wm/BLASTSyncEngine.java index 778951a545fa7..98ee98ba67f74 100644 --- a/services/core/java/com/android/server/wm/BLASTSyncEngine.java +++ b/services/core/java/com/android/server/wm/BLASTSyncEngine.java @@ -248,7 +248,10 @@ class BLASTSyncEngine { Slog.e(TAG, "WM sent Transaction to organized, but never received" + " commit callback. Application ANR likely to follow."); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); - onCommitted(merged); + synchronized (mWm.mGlobalLock) { + onCommitted(merged.mNativeObject != 0 + ? merged : mWm.mTransactionFactory.get()); + } } }; CommitCallback callback = new CommitCallback();