diff options
| author | 2012-08-23 08:44:53 -0700 | |
|---|---|---|
| committer | 2012-08-23 08:44:53 -0700 | |
| commit | 6715d1effaa70abf261112d2771d4d555cc109c2 (patch) | |
| tree | 00b0683cf5df4137b8d1fb20ed2140576000a7b6 /services/java | |
| parent | 03f482c34d7e0d2917e7f53006ee2fc9736e8773 (diff) | |
| parent | b47bbc3d80badb94229bc4ce7a2d5006faa9ef15 (diff) | |
Merge "Clean up displayId and layerStack usage." into jb-mr1-dev
Diffstat (limited to 'services/java')
8 files changed, 96 insertions, 71 deletions
diff --git a/services/java/com/android/server/wm/BlackFrame.java b/services/java/com/android/server/wm/BlackFrame.java index b98ab004ff3b..64d2602f6895 100644 --- a/services/java/com/android/server/wm/BlackFrame.java +++ b/services/java/com/android/server/wm/BlackFrame.java @@ -22,7 +22,6 @@ import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Rect; import android.util.Slog; -import android.view.Display; import android.view.Surface; import android.view.SurfaceSession; @@ -36,7 +35,7 @@ public class BlackFrame { final int layer; final Surface surface; - BlackSurface(SurfaceSession session, int layer, int l, int t, int r, int b) + BlackSurface(SurfaceSession session, int layer, int l, int t, int r, int b, int layerStack) throws Surface.OutOfResourcesException { left = l; top = t; @@ -45,10 +44,10 @@ public class BlackFrame { int h = b-t; if (WindowManagerService.DEBUG_SURFACE_TRACE) { surface = new WindowStateAnimator.SurfaceTrace(session, 0, "BlackSurface(" - + l + ", " + t + ")", Display.DEFAULT_DISPLAY, + + l + ", " + t + ")", layerStack, w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } else { - surface = new Surface(session, 0, "BlackSurface", Display.DEFAULT_DISPLAY, + surface = new Surface(session, 0, "BlackSurface", layerStack, w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } surface.setAlpha(1); @@ -104,7 +103,7 @@ public class BlackFrame { } public BlackFrame(SurfaceSession session, Rect outer, Rect inner, - int layer) throws Surface.OutOfResourcesException { + int layer, final int layerStack) throws Surface.OutOfResourcesException { boolean success = false; mOuterRect = new Rect(outer); @@ -112,19 +111,19 @@ public class BlackFrame { try { if (outer.top < inner.top) { mBlackSurfaces[0] = new BlackSurface(session, layer, - outer.left, outer.top, inner.right, inner.top); + outer.left, outer.top, inner.right, inner.top, layerStack); } if (outer.left < inner.left) { mBlackSurfaces[1] = new BlackSurface(session, layer, - outer.left, inner.top, inner.left, outer.bottom); + outer.left, inner.top, inner.left, outer.bottom, layerStack); } if (outer.bottom > inner.bottom) { mBlackSurfaces[2] = new BlackSurface(session, layer, - inner.left, inner.bottom, outer.right, outer.bottom); + inner.left, inner.bottom, outer.right, outer.bottom, layerStack); } if (outer.right > inner.right) { mBlackSurfaces[3] = new BlackSurface(session, layer, - inner.right, outer.top, outer.right, inner.bottom); + inner.right, outer.top, outer.right, inner.bottom, layerStack); } success = true; } finally { diff --git a/services/java/com/android/server/wm/DimAnimator.java b/services/java/com/android/server/wm/DimAnimator.java index 7e8b0ecfbb72..81daac69c5cf 100644 --- a/services/java/com/android/server/wm/DimAnimator.java +++ b/services/java/com/android/server/wm/DimAnimator.java @@ -39,18 +39,18 @@ class DimAnimator { int mLastDimWidth, mLastDimHeight; - DimAnimator (SurfaceSession session, final int displayId) { + DimAnimator (SurfaceSession session, final int layerStack) { if (mDimSurface == null) { try { if (WindowManagerService.DEBUG_SURFACE_TRACE) { mDimSurface = new WindowStateAnimator.SurfaceTrace(session, 0, "DimAnimator", - displayId, 16, 16, PixelFormat.OPAQUE, + layerStack, 16, 16, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } else { mDimSurface = new Surface(session, 0, "DimAnimator", - displayId, 16, 16, PixelFormat.OPAQUE, + layerStack, 16, 16, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } if (WindowManagerService.SHOW_TRANSACTIONS || diff --git a/services/java/com/android/server/wm/DimSurface.java b/services/java/com/android/server/wm/DimSurface.java index 0e5d5563c910..4ab8ce1788d1 100644 --- a/services/java/com/android/server/wm/DimSurface.java +++ b/services/java/com/android/server/wm/DimSurface.java @@ -30,18 +30,18 @@ class DimSurface { int mLayer = -1; int mLastDimWidth, mLastDimHeight; - DimSurface(SurfaceSession session, final int displayId) { + DimSurface(SurfaceSession session, final int layerStack) { if (mDimSurface == null) { try { if (WindowManagerService.DEBUG_SURFACE_TRACE) { mDimSurface = new WindowStateAnimator.SurfaceTrace(session, 0, "DimSurface", - displayId, 16, 16, PixelFormat.OPAQUE, + layerStack, 16, 16, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } else { mDimSurface = new Surface(session, 0, "DimSurface", - displayId, 16, 16, PixelFormat.OPAQUE, + layerStack, 16, 16, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM); } if (WindowManagerService.SHOW_TRANSACTIONS || diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java index a8854cfe7995..6e5bbcbbd570 100644 --- a/services/java/com/android/server/wm/DisplayContent.java +++ b/services/java/com/android/server/wm/DisplayContent.java @@ -16,10 +16,9 @@ package com.android.server.wm; +import android.view.Display; import android.view.DisplayInfo; -import com.android.server.display.DisplayManagerService; - import java.io.PrintWriter; import java.util.ArrayList; @@ -60,13 +59,13 @@ class DisplayContent { int mBaseDisplayWidth = 0; int mBaseDisplayHeight = 0; int mBaseDisplayDensity = 0; - final DisplayManagerService mDisplayManager; final DisplayInfo mDisplayInfo = new DisplayInfo(); + final Display mDisplay; - DisplayContent(DisplayManagerService displayManager, final int displayId) { - mDisplayManager = displayManager; - mDisplayId = displayId; - displayManager.getDisplayInfo(displayId, mDisplayInfo); + DisplayContent(Display display) { + mDisplay = display; + mDisplayId = display.getDisplayId(); + display.getDisplayInfo(mDisplayInfo); } int getDisplayId() { @@ -77,6 +76,10 @@ class DisplayContent { return mWindows; } + Display getDisplay() { + return mDisplay; + } + DisplayInfo getDisplayInfo() { return mDisplayInfo; } diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java index 7d85d895b219..767941399687 100644 --- a/services/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java @@ -477,6 +477,7 @@ class ScreenRotationAnimation { mRotateFrameAnimation.scaleCurrentDuration(animationScale); } + final int layerStack = mDisplay.getLayerStack(); if (USE_CUSTOM_BLACK_FRAME && mCustomBlackFrame == null) { if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS || DEBUG_STATE) Slog.i( WindowManagerService.TAG, @@ -495,7 +496,8 @@ class ScreenRotationAnimation { Rect outer = new Rect(-mOriginalWidth*1, -mOriginalHeight*1, mOriginalWidth*2, mOriginalHeight*2); Rect inner = new Rect(0, 0, mOriginalWidth, mOriginalHeight); - mCustomBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 3); + mCustomBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 3, + layerStack); mCustomBlackFrame.setMatrix(mFrameInitialMatrix); } catch (Surface.OutOfResourcesException e) { Slog.w(TAG, "Unable to allocate black surface", e); @@ -525,7 +527,8 @@ class ScreenRotationAnimation { Rect outer = new Rect(-mOriginalWidth*1, -mOriginalHeight*1, mOriginalWidth*2, mOriginalHeight*2); Rect inner = new Rect(0, 0, mOriginalWidth, mOriginalHeight); - mExitingBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 2); + mExitingBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 2, + layerStack); mExitingBlackFrame.setMatrix(mFrameInitialMatrix); } catch (Surface.OutOfResourcesException e) { Slog.w(TAG, "Unable to allocate black surface", e); @@ -547,7 +550,8 @@ class ScreenRotationAnimation { Rect outer = new Rect(-finalWidth*1, -finalHeight*1, finalWidth*2, finalHeight*2); Rect inner = new Rect(0, 0, finalWidth, finalHeight); - mEnteringBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER); + mEnteringBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER, + layerStack); } catch (Surface.OutOfResourcesException e) { Slog.w(TAG, "Unable to allocate black surface", e); } finally { diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index 1defa49b64b1..580f00d4e4d7 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -103,6 +103,8 @@ public class WindowAnimator { /** Do not modify unless holding mService.mWindowMap or this and mAnimToLayout in that order */ final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams(); + boolean mInitialized = false; + WindowAnimator(final WindowManagerService service) { mService = service; mContext = service.mContext; @@ -121,10 +123,13 @@ public class WindowAnimator { } } }; + } + void initializeLocked(final int layerStack) { mWindowAnimationBackgroundSurface = - new DimSurface(mService.mFxSession, Display.DEFAULT_DISPLAY); - mDimAnimator = new DimAnimator(mService.mFxSession, Display.DEFAULT_DISPLAY); + new DimSurface(mService.mFxSession, layerStack); + mDimAnimator = new DimAnimator(mService.mFxSession, layerStack); + mInitialized = true; } /** Locked on mAnimToLayout */ @@ -563,6 +568,9 @@ public class WindowAnimator { // TODO(cmautner): Change the following comment when no longer locked on mWindowMap */ /** Locked on mService.mWindowMap and this. */ private void animateLocked() { + if (!mInitialized) { + return; + } for (int i = mWinAnimatorLists.size() - 1; i >= 0; i--) { animateLocked(mWinAnimatorLists.get(i)); } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index b0c58350f719..6e75975735e1 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -74,6 +74,7 @@ import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; +import android.hardware.display.DisplayManager; import android.os.BatteryStats; import android.os.Binder; import android.os.Bundle; @@ -540,7 +541,7 @@ public class WindowManagerService extends IWindowManager.Stub final ArrayList<AppWindowToken> mOpeningApps = new ArrayList<AppWindowToken>(); final ArrayList<AppWindowToken> mClosingApps = new ArrayList<AppWindowToken>(); - Display mDisplay; + Display mDefaultDisplay; boolean mIsTouchDevice; @@ -606,7 +607,8 @@ public class WindowManagerService extends IWindowManager.Stub float mAnimatorDurationScale = 1.0f; final InputManagerService mInputManager; - final DisplayManagerService mDisplayManager; + final DisplayManagerService mDisplayManagerService; + final DisplayManager mDisplayManager; // Who is holding the screen on. Session mHoldingScreenOn; @@ -844,17 +846,14 @@ public class WindowManagerService extends IWindowManager.Stub private final WindowManagerPolicy mPolicy; private final WindowManagerService mService; private final Context mContext; - private final PowerManagerService mPM; boolean mRunning = false; public PolicyThread(WindowManagerPolicy policy, - WindowManagerService service, Context context, - PowerManagerService pm) { + WindowManagerService service, Context context) { super("WindowManagerPolicy"); mPolicy = policy; mService = service; mContext = context; - mPM = pm; } @Override @@ -895,7 +894,8 @@ public class WindowManagerService extends IWindowManager.Stub mOnlyCore = onlyCore; mLimitedAlphaCompositing = context.getResources().getBoolean( com.android.internal.R.bool.config_sf_limitedAlpha); - mDisplayManager = displayManager; + mDisplayManagerService = displayManager; + mDisplayManager = DisplayManager.getInstance(); mHeadless = displayManager.isHeadless(); mPowerManager = pm; @@ -931,7 +931,7 @@ public class WindowManagerService extends IWindowManager.Stub mFxSession = new SurfaceSession(); mAnimator = new WindowAnimator(this); - PolicyThread thr = new PolicyThread(mPolicy, this, context, pm); + PolicyThread thr = new PolicyThread(mPolicy, this, context); thr.start(); synchronized (thr) { @@ -1238,7 +1238,6 @@ public class WindowManagerService extends IWindowManager.Stub /** * Dig through the WindowStates and find the one that the Input Method will target. * @param willMove - * @param windows TODO(cmautner): * @return The index+1 in mWindows of the discovered target. */ int findDesiredInputMethodWindowIndexLocked(boolean willMove) { @@ -2164,7 +2163,7 @@ public class WindowManagerService extends IWindowManager.Stub long origId; synchronized(mWindowMap) { - if (mDisplay == null) { + if (mDefaultDisplay == null) { throw new IllegalStateException("Display has not been initialialized"); } @@ -3076,6 +3075,7 @@ public class WindowManagerService extends IWindowManager.Stub Binder.restoreCallingIdentity(origId); } + @Override public float getWindowCompatibilityScale(IBinder windowToken) { if (!checkCallingPermission(android.Manifest.permission.RETRIEVE_WINDOW_INFO, "getWindowCompatibilityScale()")) { @@ -3807,7 +3807,7 @@ public class WindowManagerService extends IWindowManager.Stub Configuration config = null; long ident = Binder.clearCallingIdentity(); - + synchronized(mWindowMap) { config = updateOrientationFromAppTokensLocked(currentConfig, freezeThisOneIfNeeded); @@ -3848,7 +3848,7 @@ public class WindowManagerService extends IWindowManager.Stub } } } - + return config; } @@ -3859,7 +3859,7 @@ public class WindowManagerService extends IWindowManager.Stub * setNewConfiguration() TO TELL THE WINDOW MANAGER IT CAN UNFREEZE THE * SCREEN. This will typically be done for you if you call * sendNewConfiguration(). - * + * * The orientation is computed from non-application windows first. If none of * the non-application windows specify orientation, the orientation is computed from * application tokens. @@ -5064,7 +5064,7 @@ public class WindowManagerService extends IWindowManager.Stub private boolean shouldAllowDisableKeyguard() { - // We fail safe and prevent disabling keyguard in the unlikely event this gets + // We fail safe and prevent disabling keyguard in the unlikely event this gets // called before DevicePolicyManagerService has started. if (mAllowDisableKeyguard == ALLOW_DISABLE_UNKNOWN) { DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService( @@ -5546,7 +5546,7 @@ public class WindowManagerService extends IWindowManager.Stub Surface.openTransaction(); try { if (mStrictModeFlash == null) { - mStrictModeFlash = new StrictModeFlash(mDisplay, mFxSession); + mStrictModeFlash = new StrictModeFlash(mDefaultDisplay, mFxSession); } mStrictModeFlash.setVisibility(on); } finally { @@ -5659,7 +5659,7 @@ public class WindowManagerService extends IWindowManager.Stub } // The screenshot API does not apply the current screen rotation. - rot = mDisplay.getRotation(); + rot = mDefaultDisplay.getRotation(); int fw = frame.width(); int fh = frame.height(); @@ -6574,7 +6574,7 @@ public class WindowManagerService extends IWindowManager.Stub } boolean computeScreenConfigurationLocked(Configuration config) { - if (mDisplay == null) { + if (mDefaultDisplay == null) { return false; } @@ -6630,7 +6630,7 @@ public class WindowManagerService extends IWindowManager.Stub displayInfo.appHeight = appHeight; displayInfo.getLogicalMetrics(mRealDisplayMetrics, null); displayInfo.getAppMetrics(mDisplayMetrics, null); - mDisplayManager.setDisplayInfo(displayContent.getDisplayId(), displayInfo); + mDisplayManagerService.setDisplayInfo(displayContent.getDisplayId(), displayInfo); mAnimator.setDisplayDimensions(dw, dh, appWidth, appHeight); } @@ -6781,7 +6781,7 @@ public class WindowManagerService extends IWindowManager.Stub try { if (mDragState == null) { Surface surface = new Surface(session, callerPid, "drag surface", - Display.DEFAULT_DISPLAY, + mDefaultDisplay.getLayerStack(), width, height, PixelFormat.TRANSLUCENT, Surface.HIDDEN); if (SHOW_TRANSACTIONS) Slog.i(TAG, " DRAG " + surface + ": CREATE"); @@ -6939,30 +6939,33 @@ public class WindowManagerService extends IWindowManager.Stub } public void displayReady() { - displayReady(Display.DEFAULT_DISPLAY); + WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE); + final Display display = wm.getDefaultDisplay(); + displayReady(display.getDisplayId()); synchronized(mWindowMap) { readForcedDisplaySizeAndDensityLocked(getDefaultDisplayContent()); - WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE); - mDisplay = wm.getDefaultDisplay(); + mDefaultDisplay = display; mIsTouchDevice = mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_TOUCHSCREEN); + mAnimator.initializeLocked(display.getLayerStack()); + final DisplayInfo displayInfo = getDefaultDisplayInfo(); mAnimator.setDisplayDimensions(displayInfo.logicalWidth, displayInfo.logicalHeight, displayInfo.appWidth, displayInfo.appHeight); DisplayDeviceInfo info = new DisplayDeviceInfo(); - mDisplayManager.getDefaultExternalDisplayDeviceInfo(info); + mDisplayManagerService.getDefaultExternalDisplayDeviceInfo(info); final DisplayContent displayContent = getDefaultDisplayContent(); - mInputManager.setDisplaySize(Display.DEFAULT_DISPLAY, + mInputManager.setDisplaySize(displayContent.getDisplayId(), displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, info.width, info.height); - mInputManager.setDisplayOrientation(Display.DEFAULT_DISPLAY, - mDisplay.getRotation(), Surface.ROTATION_0); - mPolicy.setInitialDisplaySize(mDisplay, displayContent.mInitialDisplayWidth, + mInputManager.setDisplayOrientation(displayContent.getDisplayId(), + mDefaultDisplay.getRotation(), Surface.ROTATION_0); + mPolicy.setInitialDisplaySize(mDefaultDisplay, displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, displayContent.mInitialDisplayDensity); } @@ -6979,7 +6982,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(displayContent.mDisplaySizeLock) { // Bootstrap the default logical display from the display manager. displayInfo = displayContent.getDisplayInfo(); - mDisplayManager.getDisplayInfo(displayId, displayInfo); + mDisplayManagerService.getDisplayInfo(displayId, displayInfo); displayContent.mInitialDisplayWidth = displayInfo.logicalWidth; displayContent.mInitialDisplayHeight = displayInfo.logicalHeight; displayContent.mInitialDisplayDensity = displayInfo.logicalDensityDpi; @@ -7620,7 +7623,8 @@ public class WindowManagerService extends IWindowManager.Stub Rect outer = new Rect(0, 0, initW, initH); Rect inner = new Rect(0, 0, baseW, baseH); try { - mBlackFrame = new BlackFrame(mFxSession, outer, inner, MASK_LAYER); + mBlackFrame = new BlackFrame(mFxSession, outer, inner, MASK_LAYER, + mDefaultDisplay.getLayerStack()); } catch (Surface.OutOfResourcesException e) { } } @@ -7719,7 +7723,7 @@ public class WindowManagerService extends IWindowManager.Stub } private void reconfigureDisplayLocked(DisplayContent displayContent) { - mPolicy.setInitialDisplaySize(mDisplay, displayContent.mBaseDisplayWidth, + mPolicy.setInitialDisplaySize(mDefaultDisplay, displayContent.mBaseDisplayWidth, displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity); mLayoutNeeded = true; @@ -7944,7 +7948,7 @@ public class WindowManagerService extends IWindowManager.Stub return; } - if (mDisplay == null) { + if (mDefaultDisplay == null) { // Not yet initialized, nothing to do. return; } @@ -8408,7 +8412,7 @@ public class WindowManagerService extends IWindowManager.Stub mNextAppTransitionThumbnail.getHeight()); try { Surface surface = new Surface(mFxSession, Process.myPid(), - "thumbnail anim", Display.DEFAULT_DISPLAY, + "thumbnail anim", mDefaultDisplay.getLayerStack(), dirty.width(), dirty.height(), PixelFormat.TRANSLUCENT, Surface.HIDDEN); topOpeningApp.mAppAnimator.thumbnail = surface; @@ -8676,7 +8680,7 @@ public class WindowManagerService extends IWindowManager.Stub Slog.v(TAG, "performLayoutAndPlaceSurfacesLockedInner: entry. Called by " + Debug.getCallers(3)); } - if (mDisplay == null) { + if (mDefaultDisplay == null) { Slog.i(TAG, "skipping performLayoutAndPlaceSurfacesLockedInner with no mDisplay"); return; } @@ -9587,7 +9591,7 @@ public class WindowManagerService extends IWindowManager.Stub return; } - if (mDisplay == null || !mPolicy.isScreenOnFully()) { + if (mDefaultDisplay == null || !mPolicy.isScreenOnFully()) { // No need to freeze the screen before the system is ready or if // the screen is off. return; @@ -9620,9 +9624,9 @@ public class WindowManagerService extends IWindowManager.Stub // TODO(multidisplay): rotation on main screen only. DisplayInfo displayInfo = getDefaultDisplayContent().getDisplayInfo(); - mAnimator.mScreenRotationAnimation = new ScreenRotationAnimation(mContext, mDisplay, - mFxSession, inTransaction, displayInfo.logicalWidth, displayInfo.logicalHeight, - mDisplay.getRotation()); + mAnimator.mScreenRotationAnimation = new ScreenRotationAnimation(mContext, + mDefaultDisplay, mFxSession, inTransaction, displayInfo.logicalWidth, + displayInfo.logicalHeight, mDefaultDisplay.getRotation()); } } @@ -9733,7 +9737,8 @@ public class WindowManagerService extends IWindowManager.Stub if (line != null) { String[] toks = line.split("%"); if (toks != null && toks.length > 0) { - mWatermark = new Watermark(mDisplay, mRealDisplayMetrics, mFxSession, toks); + mWatermark = + new Watermark(mDefaultDisplay, mRealDisplayMetrics, mFxSession, toks); } } } catch (FileNotFoundException e) { @@ -10101,7 +10106,7 @@ public class WindowManagerService extends IWindowManager.Stub } } pw.println(); - if (mDisplay != null) { + if (mDefaultDisplay != null) { DisplayContentsIterator dCIterator = new DisplayContentsIterator(); while (dCIterator.hasNext()) { dCIterator.next().dump(pw); @@ -10428,7 +10433,7 @@ public class WindowManagerService extends IWindowManager.Stub public DisplayContent getDisplayContent(final int displayId) { DisplayContent displayContent = mDisplayContents.get(displayId); if (displayContent == null) { - displayContent = new DisplayContent(mDisplayManager, displayId); + displayContent = new DisplayContent(mDisplayManager.getRealDisplay(displayId)); mDisplayContents.put(displayId, displayContent); } return displayContent; @@ -10497,7 +10502,8 @@ public class WindowManagerService extends IWindowManager.Stub } } else { mWindowListIndex++; - if (mWindowListIndex >= mWindowList.size() && mDisplayContentsIterator.hasNext()) { + if (mWindowListIndex >= mWindowList.size() + && mDisplayContentsIterator.hasNext()) { mDisplayContent = mDisplayContentsIterator.next(); mWindowList = mDisplayContent.getWindowList(); mWindowListIndex = 0; @@ -10515,7 +10521,9 @@ public class WindowManagerService extends IWindowManager.Stub } public DisplayContent getDefaultDisplayContent() { - return getDisplayContent(Display.DEFAULT_DISPLAY); + final int displayId = mDefaultDisplay == null + ? Display.DEFAULT_DISPLAY : mDefaultDisplay.getDisplayId(); + return getDisplayContent(displayId); } public WindowList getDefaultWindowList() { diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java index 69bad81cc645..982f60d30c79 100644 --- a/services/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/java/com/android/server/wm/WindowStateAnimator.java @@ -148,6 +148,8 @@ class WindowStateAnimator { int mAttrFlags; int mAttrType; + final int mLayerStack; + public WindowStateAnimator(final WindowState win) { final WindowManagerService service = win.mService; @@ -167,6 +169,7 @@ class WindowStateAnimator { mAttrFlags = win.mAttrs.flags; mAttrType = win.mAttrs.type; mIsWallpaper = win.mIsWallpaper; + mLayerStack = win.mDisplayContent.getDisplay().getLayerStack(); } public void setAnimation(Animation anim) { @@ -651,12 +654,12 @@ class WindowStateAnimator { mSurface = new SurfaceTrace( mSession.mSurfaceSession, mSession.mPid, attrs.getTitle().toString(), - mWin.mDisplayContent.getDisplayId(), w, h, format, flags); + mLayerStack, w, h, format, flags); } else { mSurface = new Surface( mSession.mSurfaceSession, mSession.mPid, attrs.getTitle().toString(), - mWin.mDisplayContent.getDisplayId(), w, h, format, flags); + mLayerStack, w, h, format, flags); } mWin.mHasSurface = true; if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) Slog.i(TAG, |