From c60a421d937eb01576fa8bbb0966cebeddf19df3 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Thu, 2 Oct 2025 21:32:58 +0700 Subject: [PATCH] fix: Rare NoSuchMethodError crash on SurfaceControl setEarlyWakeupStart and setEarlyWakeupEnd Signed-off-by: Pun Butrach --- GITHUB_CHANGELOG.md | 1 + .../taskbar/overlay/TaskbarOverlayController.java | 12 ++++++++++-- .../android/quickstep/util/BaseDepthController.java | 12 ++++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/GITHUB_CHANGELOG.md b/GITHUB_CHANGELOG.md index 9618fc5eea..b4c790f105 100644 --- a/GITHUB_CHANGELOG.md +++ b/GITHUB_CHANGELOG.md @@ -46,6 +46,7 @@ Compatibility list: * [Lawnchair] Reimplement Bulk icons toggle * SettingsCache crashing with SecurityException with unreadable keys (@hide) in Android 12 and newer (assume false) * Assume flags `enableMovingContentIntoPrivateSpace` is false when ClassNotFoundException on Android 16 devices +* Rare NoSuchMethodError crash on SurfaceControl setEarlyWakeupStart and setEarlyWakeupEnd #### Known Bugs * Preview can't show device wallpaper -> (lIxkAYGg) diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java index de20f779a7..178fe9d6b6 100644 --- a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java +++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java @@ -260,11 +260,19 @@ public final class TaskbarOverlayController { boolean wantsEarlyWakeUp = radius > 0 && radius < mMaxBlurRadius; if (wantsEarlyWakeUp && !mInEarlyWakeUp) { Log.d(TAG, "setBackgroundBlurRadius: setting early wakeup"); - transaction.setEarlyWakeupStart(); + try { + transaction.setEarlyWakeupStart(); + } catch (NoSuchMethodError e) { + // LC-Ignored: wtf? + } mInEarlyWakeUp = true; } else if (!wantsEarlyWakeUp && mInEarlyWakeUp) { Log.d(TAG, "setBackgroundBlurRadius: clearing early wakeup"); - transaction.setEarlyWakeupEnd(); + try { + transaction.setEarlyWakeupEnd(); + } catch (NoSuchMethodError e) { + // LC-Ignored: wtf? + } mInEarlyWakeUp = false; } diff --git a/quickstep/src/com/android/quickstep/util/BaseDepthController.java b/quickstep/src/com/android/quickstep/util/BaseDepthController.java index 89f1e33d6e..df7b148f7c 100644 --- a/quickstep/src/com/android/quickstep/util/BaseDepthController.java +++ b/quickstep/src/com/android/quickstep/util/BaseDepthController.java @@ -208,10 +208,18 @@ public class BaseDepthController { // SurfaceFlinger will adjust its internal offsets to avoid jank. boolean wantsEarlyWakeUp = depth > 0 && depth < 1; if (wantsEarlyWakeUp && !mInEarlyWakeUp) { - transaction.setEarlyWakeupStart(); + try { + transaction.setEarlyWakeupStart(); + } catch (NoSuchMethodError e) { + // LC-Ignored: wtf? + } mInEarlyWakeUp = true; } else if (!wantsEarlyWakeUp && mInEarlyWakeUp) { - transaction.setEarlyWakeupEnd(); + try { + transaction.setEarlyWakeupEnd(); + } catch (NoSuchMethodError e) { + // LC-Ignored: wtf? + } mInEarlyWakeUp = false; }