From 03850591954faf5280fd581dd04cd6958eda0124 Mon Sep 17 00:00:00 2001 From: Filip Gruszczynski Date: Wed, 1 Jul 2015 08:35:28 -0700 Subject: [PATCH] Handle outsets when resized is called due to rotation. Rotation might change while the wallpaper is displayed. If outsets are present, this must trigger a resized callback and the wallpaper must take these accounts immediately into account before requesting relayout. Bug: 22209764 Change-Id: I97f2670f384ccac792e7c2727eb0ef017ec66188 --- core/java/android/service/wallpaper/WallpaperService.java | 5 +++-- .../java/com/android/server/wm/WindowManagerService.java | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 5791d6344bf27..181e533653b8c 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -273,8 +273,8 @@ public abstract class WallpaperService extends Service { public void resized(Rect frame, Rect overscanInsets, Rect contentInsets, Rect visibleInsets, Rect stableInsets, Rect outsets, boolean reportDraw, Configuration newConfig) { - Message msg = mCaller.obtainMessageI(MSG_WINDOW_RESIZED, - reportDraw ? 1 : 0); + Message msg = mCaller.obtainMessageIO(MSG_WINDOW_RESIZED, + reportDraw ? 1 : 0, outsets); mCaller.sendMessage(msg); } @@ -1194,6 +1194,7 @@ public abstract class WallpaperService extends Service { } break; case MSG_WINDOW_RESIZED: { final boolean reportDraw = message.arg1 != 0; + mEngine.mOutsets.set((Rect) message.obj); mEngine.updateSurface(true, false, reportDraw); mEngine.doOffsetsChanged(true); } break; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 6dd9ef6d5a32a..a1b74fded3f6d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9442,6 +9442,7 @@ public class WindowManagerService extends IWindowManager.Stub if (w.mContentInsetsChanged || w.mVisibleInsetsChanged || winAnimator.mSurfaceResized + || w.mOutsetsChanged || configChanged) { if (DEBUG_RESIZE || DEBUG_ORIENTATION) { Slog.v(TAG, "Resize reasons for w=" + w + ": " @@ -9451,6 +9452,8 @@ public class WindowManagerService extends IWindowManager.Stub + " " + w.mVisibleInsets.toShortString() + " stableInsetsChanged=" + w.mStableInsetsChanged + " " + w.mStableInsets.toShortString() + + " outsetsChanged=" + w.mOutsetsChanged + + " " + w.mOutsets.toShortString() + " surfaceResized=" + winAnimator.mSurfaceResized + " configChanged=" + configChanged); }