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

Commit 359c0a20 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Avoid sending messages of destroyed Engine" into udc-dev

parents 99c28e88 6f9ac2b1
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -868,6 +868,11 @@ public abstract class WallpaperService extends Service {
         * This will trigger a {@link #onComputeColors()} call.
         */
        public void notifyColorsChanged() {
            if (mDestroyed) {
                Log.i(TAG, "Ignoring notifyColorsChanged(), Engine has already been destroyed.");
                return;
            }

            final long now = mClockFunction.get();
            if (now - mLastColorInvalidation < NOTIFY_COLORS_RATE_LIMIT_MS) {
                Log.w(TAG, "This call has been deferred. You should only call "
@@ -2226,7 +2231,11 @@ public abstract class WallpaperService extends Service {
            }
        }

        void detach() {
        /**
         * @hide
         */
        @VisibleForTesting
        public void detach() {
            if (mDestroyed) {
                return;
            }
@@ -2442,6 +2451,14 @@ public abstract class WallpaperService extends Service {
        }

        public void reportShown() {
            if (mEngine == null) {
                Log.i(TAG, "Can't report null engine as shown.");
                return;
            }
            if (mEngine.mDestroyed) {
                Log.i(TAG, "Engine was destroyed before we could draw.");
                return;
            }
            if (!mShownReported) {
                mShownReported = true;
                Trace.beginSection("WPMS.mConnection.engineShown");
+4 −0
Original line number Diff line number Diff line
dupin@google.com
santie@google.com
pomini@google.com
poultney@google.com
 No newline at end of file
+13 −0
Original line number Diff line number Diff line
@@ -85,4 +85,17 @@ public class WallpaperServiceTest {
        assertEquals("onAmbientModeChanged should have been called", 2, zoomChangedCount[0]);
    }

    @Test
    public void testNotifyColorsOfDestroyedEngine_doesntCrash() {
        WallpaperService service = new WallpaperService() {
            @Override
            public Engine onCreateEngine() {
                return new Engine();
            }
        };
        WallpaperService.Engine engine = service.onCreateEngine();
        engine.detach();

        engine.notifyColorsChanged();
    }
}