From c64a3fefd5629b6b2ea3d1db6a045a3b2ce9e5ba Mon Sep 17 00:00:00 2001 From: Robert Snoeberger Date: Fri, 13 Dec 2019 12:25:25 -0500 Subject: [PATCH] Notify ClockChangedListeners on main thread Bug: 146033031 Test: install clock plugin that is direct boot aware. Reboot, and check that custom clock appears on lock screen. Change-Id: I350c3d21a11a2c64078c31af3bee9364e3cd9062 --- .../src/com/android/keyguard/clock/ClockManager.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java index 9e2464ea4fbb7..25b6bd635e101 100644 --- a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java +++ b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java @@ -243,11 +243,12 @@ public final class ClockManager { mPreviewClocks.reloadCurrentClock(); mListeners.forEach((listener, clocks) -> { clocks.reloadCurrentClock(); - ClockPlugin clock = clocks.getCurrentClock(); - if (clock instanceof DefaultClockController) { - listener.onClockChanged(null); + final ClockPlugin clock = clocks.getCurrentClock(); + if (Looper.myLooper() == Looper.getMainLooper()) { + listener.onClockChanged(clock instanceof DefaultClockController ? null : clock); } else { - listener.onClockChanged(clock); + mMainHandler.post(() -> listener.onClockChanged( + clock instanceof DefaultClockController ? null : clock)); } }); }