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

Commit 8855d469 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am ebdc064d: am 7ef38ea9: Merge "Fix issue #7275122: Wall paper jank when...

am ebdc064d: am 7ef38ea9: Merge "Fix issue #7275122: Wall paper jank when switching users" into jb-mr1-dev

* commit 'ebdc064d':
  Fix issue #7275122: Wall paper jank when switching users
parents 646fd913 ebdc064d
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -574,7 +574,8 @@ public abstract class WallpaperService extends Service {
            final boolean flagsChanged = mCurWindowFlags != mWindowFlags ||
                    mCurWindowPrivateFlags != mWindowPrivateFlags;
            if (forceRelayout || creating || surfaceCreating || formatChanged || sizeChanged
                    || typeChanged || flagsChanged || redrawNeeded) {
                    || typeChanged || flagsChanged || redrawNeeded
                    || !mIWallpaperEngine.mShownReported) {

                if (DEBUG) Log.v(TAG, "Changes: creating=" + creating
                        + " format=" + formatChanged + " size=" + sizeChanged);
@@ -739,6 +740,7 @@ public abstract class WallpaperService extends Service {
                        if (redrawNeeded) {
                            mSession.finishDrawing(mWindow);
                        }
                        mIWallpaperEngine.reportShown();
                    }
                } catch (RemoteException ex) {
                }
@@ -950,6 +952,7 @@ public abstract class WallpaperService extends Service {
        final IBinder mWindowToken;
        final int mWindowType;
        final boolean mIsPreview;
        boolean mShownReported;
        int mReqWidth;
        int mReqHeight;
        
@@ -1002,6 +1005,18 @@ public abstract class WallpaperService extends Service {
            }
        }

        public void reportShown() {
            if (!mShownReported) {
                mShownReported = true;
                try {
                    mConnection.engineShown(this);
                } catch (RemoteException e) {
                    Log.w(TAG, "Wallpaper host disappeared", e);
                    return;
                }
            }
        }

        public void destroy() {
            Message msg = mCaller.obtainMessage(DO_DETACH);
            mCaller.sendMessage(msg);
@@ -1020,12 +1035,6 @@ public abstract class WallpaperService extends Service {
                    mEngine = engine;
                    mActiveEngines.add(engine);
                    engine.attach(this);
                    try {
                        mConnection.engineShown(this);
                    } catch (RemoteException e) {
                        Log.w(TAG, "Wallpaper host disappeared", e);
                        return;
                    }
                    return;
                }
                case DO_DETACH: {
+14 −14
Original line number Diff line number Diff line
@@ -98,6 +98,13 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
    static final String WALLPAPER = "wallpaper";
    static final String WALLPAPER_INFO = "wallpaper_info.xml";

    /**
     * Name of the component used to display bitmap wallpapers from either the gallery or
     * built-in wallpapers.
     */
    static final ComponentName IMAGE_WALLPAPER = new ComponentName("com.android.systemui",
            "com.android.systemui.ImageWallpaper");

    /**
     * Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
     * that the wallpaper has changed. The CREATE is triggered when there is no
@@ -138,7 +145,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
                        if (event == CLOSE_WRITE) {
                            mWallpaper.imageWallpaperPending = false;
                        }
                        bindWallpaperComponentLocked(mWallpaper.imageWallpaperComponent, true,
                        bindWallpaperComponentLocked(IMAGE_WALLPAPER, true,
                                false, mWallpaper, null);
                        saveSettingsLocked(mWallpaper);
                    }
@@ -183,13 +190,6 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
         */
        ComponentName nextWallpaperComponent;

        /**
         * Name of the component used to display bitmap wallpapers from either the gallery or
         * built-in wallpapers.
         */
        ComponentName imageWallpaperComponent = new ComponentName("com.android.systemui",
                "com.android.systemui.ImageWallpaper");

        WallpaperConnection connection;
        long lastDiedTime;
        boolean wallpaperUpdating;
@@ -559,7 +559,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
            wallpaper.imageWallpaperPending = false;
            if (userId != mCurrentUserId) return;
            if (bindWallpaperComponentLocked(defaultFailed
                    ? wallpaper.imageWallpaperComponent
                    ? IMAGE_WALLPAPER
                    : null, true, false, wallpaper, reply)) {
                return;
            }
@@ -792,7 +792,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
                }
                if (componentName == null) {
                    // Fall back to static image wallpaper
                    componentName = wallpaper.imageWallpaperComponent;
                    componentName = IMAGE_WALLPAPER;
                    //clearWallpaperComponentLocked();
                    //return;
                    if (DEBUG) Slog.v(TAG, "Using image wallpaper");
@@ -815,7 +815,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
            WallpaperInfo wi = null;
            
            Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
            if (componentName != null && !componentName.equals(wallpaper.imageWallpaperComponent)) {
            if (componentName != null && !componentName.equals(IMAGE_WALLPAPER)) {
                // Make sure the selected service is actually a wallpaper service.
                List<ResolveInfo> ris =
                        mIPackageManager.queryIntentServices(intent,
@@ -990,7 +990,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
            out.attribute(null, "height", Integer.toString(wallpaper.height));
            out.attribute(null, "name", wallpaper.name);
            if (wallpaper.wallpaperComponent != null
                    && !wallpaper.wallpaperComponent.equals(wallpaper.imageWallpaperComponent)) {
                    && !wallpaper.wallpaperComponent.equals(IMAGE_WALLPAPER)) {
                out.attribute(null, "component",
                        wallpaper.wallpaperComponent.flattenToShortString());
            }
@@ -1062,7 +1062,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
                        if (wallpaper.nextWallpaperComponent == null
                                || "android".equals(wallpaper.nextWallpaperComponent
                                        .getPackageName())) {
                            wallpaper.nextWallpaperComponent = wallpaper.imageWallpaperComponent;
                            wallpaper.nextWallpaperComponent = IMAGE_WALLPAPER;
                        }
                          
                        if (DEBUG) {
@@ -1124,7 +1124,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
            loadSettingsLocked(0);
            wallpaper = mWallpaperMap.get(0);
            if (wallpaper.nextWallpaperComponent != null
                    && !wallpaper.nextWallpaperComponent.equals(wallpaper.imageWallpaperComponent)) {
                    && !wallpaper.nextWallpaperComponent.equals(IMAGE_WALLPAPER)) {
                if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false,
                        wallpaper, null)) {
                    // No such live wallpaper or other failure; fall back to the default