Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9282c3c0 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Remove possible residual callbacks when detach wallpaper." into...

Merge "Remove possible residual callbacks when detach wallpaper." into rvc-qpr-dev am: 4d7f81e9 am: 66eea5db

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12202963

Change-Id: I96391e78f990be3e51869b8caa5d19884ca3e6ab
parents 9881ab9a 66eea5db
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -1160,9 +1160,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            }
        };

        private Runnable mTryToRebindRunnable = () -> {
            tryToRebind();
        };
        private Runnable mTryToRebindRunnable = this::tryToRebind;

        WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper, int clientUid) {
            mInfo = info;
@@ -1295,14 +1293,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    // a short time in the future, specifically to allow any pending package
                    // update message on this same looper thread to be processed.
                    if (!mWallpaper.wallpaperUpdating) {
                        mContext.getMainThreadHandler().postDelayed(() -> processDisconnect(this),
                        mContext.getMainThreadHandler().postDelayed(mDisconnectRunnable,
                                1000);
                    }
                }
            }
        }

        public void scheduleTimeoutLocked() {
        private void scheduleTimeoutLocked() {
            // If we didn't reset it right away, do so after we couldn't connect to
            // it for an extended amount of time to avoid having a black wallpaper.
            final Handler fgHandler = FgThread.getHandler();
@@ -1342,11 +1340,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            }
        }

        private void processDisconnect(final ServiceConnection connection) {
        private Runnable mDisconnectRunnable = () -> {
            synchronized (mLock) {
                // The wallpaper disappeared.  If this isn't a system-default one, track
                // crashes and fall back to default if it continues to misbehave.
                if (connection == mWallpaper.connection) {
                if (this == mWallpaper.connection) {
                    final ComponentName wpService = mWallpaper.wallpaperComponent;
                    if (!mWallpaper.wallpaperUpdating
                            && mWallpaper.userId == mCurrentUserId
@@ -1374,7 +1372,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    }
                }
            }
        }
        };

        /**
         * Called by a live wallpaper if its colors have changed.
@@ -2786,6 +2784,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    WallpaperConnection.DisplayConnector::disconnectLocked);
            wallpaper.connection.mService = null;
            wallpaper.connection.mDisplayConnector.clear();

            FgThread.getHandler().removeCallbacks(wallpaper.connection.mResetRunnable);
            mContext.getMainThreadHandler().removeCallbacks(
                    wallpaper.connection.mDisconnectRunnable);
            mContext.getMainThreadHandler().removeCallbacks(
                    wallpaper.connection.mTryToRebindRunnable);

            wallpaper.connection = null;
            if (wallpaper == mLastWallpaper) mLastWallpaper = null;
        }