From ff41a8bf66fb2ee763747bd7c941106f8d25f990 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 17 Mar 2025 14:31:08 -0700 Subject: Only accessing mListeningHolders on main thread Bug: 402648481 Test: Manual Flag: EXEMPT bugfix Change-Id: I037fff805be0b52407ed020e33aeb9db45616dd9 --- .../launcher3/uioverrides/QuickstepWidgetHolder.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'quickstep/src') diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java index 9970a7dcf8..c7eedb0a1d 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java @@ -30,7 +30,6 @@ import android.widget.RemoteViews; import androidx.annotation.AnyThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.UiThread; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.SafeCloseable; @@ -167,7 +166,7 @@ public final class QuickstepWidgetHolder extends LauncherWidgetHolder { }; QuickstepWidgetHolderListener holderListener = getHolderListener(appWidgetId); holderListener.addHolder(handler); - return () -> holderListener.mListeningHolders.remove(handler); + return () -> holderListener.removeHolder(handler); } /** @@ -211,7 +210,7 @@ public final class QuickstepWidgetHolder extends LauncherWidgetHolder { public void clearViews() { mViews.clear(); for (int i = sListeners.size() - 1; i >= 0; i--) { - sListeners.valueAt(i).mListeningHolders.remove(mUpdateHandler); + sListeners.valueAt(i).removeHolder(mUpdateHandler); } } @@ -238,13 +237,15 @@ public final class QuickstepWidgetHolder extends LauncherWidgetHolder { mWidgetId = widgetId; } - @UiThread - @Nullable public RemoteViews addHolder(@NonNull UpdateHandler holder) { - mListeningHolders.add(holder); + MAIN_EXECUTOR.execute(() -> mListeningHolders.add(holder)); return mRemoteViews; } + public void removeHolder(@NonNull UpdateHandler holder) { + MAIN_EXECUTOR.execute(() -> mListeningHolders.remove(holder)); + } + @Override @AnyThread public void onUpdateProviderInfo(@Nullable AppWidgetProviderInfo info) { -- cgit v1.2.3-59-g8ed1b