Skip to content

Commit b47bbc3

Browse files
author
Craig Mautner
committed
Clean up displayId and layerStack usage.
Make better use of Display object by saving it in DisplayContent. Only use layerStack when referring to Surfaces. Get displayId from default Display or default DisplayContent. Remove warnings. Fixes bug 7038151. Change-Id: Ie493f0f5e755dc9b91ee969ff561c2a098283ead
1 parent 2bd65b6 commit b47bbc3

File tree

10 files changed

+100
-76
lines changed

10 files changed

+100
-76
lines changed

core/java/android/hardware/display/DisplayManager.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import android.os.RemoteException;
2525
import android.os.ServiceManager;
2626
import android.util.Log;
27-
import android.util.SparseArray;
2827
import android.view.CompatibilityInfoHolder;
2928
import android.view.Display;
3029
import android.view.DisplayInfo;

core/java/android/view/Surface.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -388,8 +388,8 @@ void setCompatibilityTranslator(Translator translator) {
388388
/** Free all server-side state associated with this surface and
389389
* release this object's reference. @hide */
390390
public native void destroy();
391-
392-
private native Canvas lockCanvasNative(Rect dirty);
391+
392+
private native Canvas lockCanvasNative(Rect dirty) throws OutOfResourcesException;
393393

394394
/**
395395
* set the orientation of the given display.
@@ -497,10 +497,10 @@ protected void finalize() throws Throwable {
497497
}
498498

499499
private native void init(SurfaceSession s,
500-
int pid, String name, int displayId, int w, int h, int format, int flags)
500+
int pid, String name, int layerStack, int w, int h, int format, int flags)
501501
throws OutOfResourcesException;
502502

503-
private native void init(Parcel source);
503+
private native void init(Parcel source) throws OutOfResourcesException;
504504

505505
private native void initFromSurfaceTexture(SurfaceTexture surfaceTexture);
506506

services/java/com/android/server/wm/BlackFrame.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.graphics.PixelFormat;
2323
import android.graphics.Rect;
2424
import android.util.Slog;
25-
import android.view.Display;
2625
import android.view.Surface;
2726
import android.view.SurfaceSession;
2827

@@ -36,7 +35,7 @@ class BlackSurface {
3635
final int layer;
3736
final Surface surface;
3837

39-
BlackSurface(SurfaceSession session, int layer, int l, int t, int r, int b)
38+
BlackSurface(SurfaceSession session, int layer, int l, int t, int r, int b, int layerStack)
4039
throws Surface.OutOfResourcesException {
4140
left = l;
4241
top = t;
@@ -45,10 +44,10 @@ class BlackSurface {
4544
int h = b-t;
4645
if (WindowManagerService.DEBUG_SURFACE_TRACE) {
4746
surface = new WindowStateAnimator.SurfaceTrace(session, 0, "BlackSurface("
48-
+ l + ", " + t + ")", Display.DEFAULT_DISPLAY,
47+
+ l + ", " + t + ")", layerStack,
4948
w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM);
5049
} else {
51-
surface = new Surface(session, 0, "BlackSurface", Display.DEFAULT_DISPLAY,
50+
surface = new Surface(session, 0, "BlackSurface", layerStack,
5251
w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM);
5352
}
5453
surface.setAlpha(1);
@@ -104,27 +103,27 @@ public void printTo(String prefix, PrintWriter pw) {
104103
}
105104

106105
public BlackFrame(SurfaceSession session, Rect outer, Rect inner,
107-
int layer) throws Surface.OutOfResourcesException {
106+
int layer, final int layerStack) throws Surface.OutOfResourcesException {
108107
boolean success = false;
109108

110109
mOuterRect = new Rect(outer);
111110
mInnerRect = new Rect(inner);
112111
try {
113112
if (outer.top < inner.top) {
114113
mBlackSurfaces[0] = new BlackSurface(session, layer,
115-
outer.left, outer.top, inner.right, inner.top);
114+
outer.left, outer.top, inner.right, inner.top, layerStack);
116115
}
117116
if (outer.left < inner.left) {
118117
mBlackSurfaces[1] = new BlackSurface(session, layer,
119-
outer.left, inner.top, inner.left, outer.bottom);
118+
outer.left, inner.top, inner.left, outer.bottom, layerStack);
120119
}
121120
if (outer.bottom > inner.bottom) {
122121
mBlackSurfaces[2] = new BlackSurface(session, layer,
123-
inner.left, inner.bottom, outer.right, outer.bottom);
122+
inner.left, inner.bottom, outer.right, outer.bottom, layerStack);
124123
}
125124
if (outer.right > inner.right) {
126125
mBlackSurfaces[3] = new BlackSurface(session, layer,
127-
inner.right, outer.top, outer.right, inner.bottom);
126+
inner.right, outer.top, outer.right, inner.bottom, layerStack);
128127
}
129128
success = true;
130129
} finally {

services/java/com/android/server/wm/DimAnimator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,18 @@ class DimAnimator {
3939

4040
int mLastDimWidth, mLastDimHeight;
4141

42-
DimAnimator (SurfaceSession session, final int displayId) {
42+
DimAnimator (SurfaceSession session, final int layerStack) {
4343
if (mDimSurface == null) {
4444
try {
4545
if (WindowManagerService.DEBUG_SURFACE_TRACE) {
4646
mDimSurface = new WindowStateAnimator.SurfaceTrace(session, 0,
4747
"DimAnimator",
48-
displayId, 16, 16, PixelFormat.OPAQUE,
48+
layerStack, 16, 16, PixelFormat.OPAQUE,
4949
Surface.FX_SURFACE_DIM);
5050
} else {
5151
mDimSurface = new Surface(session, 0,
5252
"DimAnimator",
53-
displayId, 16, 16, PixelFormat.OPAQUE,
53+
layerStack, 16, 16, PixelFormat.OPAQUE,
5454
Surface.FX_SURFACE_DIM);
5555
}
5656
if (WindowManagerService.SHOW_TRANSACTIONS ||

services/java/com/android/server/wm/DimSurface.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ class DimSurface {
3030
int mLayer = -1;
3131
int mLastDimWidth, mLastDimHeight;
3232

33-
DimSurface(SurfaceSession session, final int displayId) {
33+
DimSurface(SurfaceSession session, final int layerStack) {
3434
if (mDimSurface == null) {
3535
try {
3636
if (WindowManagerService.DEBUG_SURFACE_TRACE) {
3737
mDimSurface = new WindowStateAnimator.SurfaceTrace(session, 0,
3838
"DimSurface",
39-
displayId, 16, 16, PixelFormat.OPAQUE,
39+
layerStack, 16, 16, PixelFormat.OPAQUE,
4040
Surface.FX_SURFACE_DIM);
4141
} else {
4242
mDimSurface = new Surface(session, 0,
4343
"DimSurface",
44-
displayId, 16, 16, PixelFormat.OPAQUE,
44+
layerStack, 16, 16, PixelFormat.OPAQUE,
4545
Surface.FX_SURFACE_DIM);
4646
}
4747
if (WindowManagerService.SHOW_TRANSACTIONS ||

services/java/com/android/server/wm/DisplayContent.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@
1616

1717
package com.android.server.wm;
1818

19+
import android.view.Display;
1920
import android.view.DisplayInfo;
2021

21-
import com.android.server.display.DisplayManagerService;
22-
2322
import java.io.PrintWriter;
2423
import java.util.ArrayList;
2524

@@ -60,13 +59,13 @@ class DisplayContent {
6059
int mBaseDisplayWidth = 0;
6160
int mBaseDisplayHeight = 0;
6261
int mBaseDisplayDensity = 0;
63-
final DisplayManagerService mDisplayManager;
6462
final DisplayInfo mDisplayInfo = new DisplayInfo();
63+
final Display mDisplay;
6564

66-
DisplayContent(DisplayManagerService displayManager, final int displayId) {
67-
mDisplayManager = displayManager;
68-
mDisplayId = displayId;
69-
displayManager.getDisplayInfo(displayId, mDisplayInfo);
65+
DisplayContent(Display display) {
66+
mDisplay = display;
67+
mDisplayId = display.getDisplayId();
68+
display.getDisplayInfo(mDisplayInfo);
7069
}
7170

7271
int getDisplayId() {
@@ -77,6 +76,10 @@ WindowList getWindowList() {
7776
return mWindows;
7877
}
7978

79+
Display getDisplay() {
80+
return mDisplay;
81+
}
82+
8083
DisplayInfo getDisplayInfo() {
8184
return mDisplayInfo;
8285
}

services/java/com/android/server/wm/ScreenRotationAnimation.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ private boolean startAnimation(SurfaceSession session, long maxAnimationDuration
477477
mRotateFrameAnimation.scaleCurrentDuration(animationScale);
478478
}
479479

480+
final int layerStack = mDisplay.getLayerStack();
480481
if (USE_CUSTOM_BLACK_FRAME && mCustomBlackFrame == null) {
481482
if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS || DEBUG_STATE) Slog.i(
482483
WindowManagerService.TAG,
@@ -495,7 +496,8 @@ private boolean startAnimation(SurfaceSession session, long maxAnimationDuration
495496
Rect outer = new Rect(-mOriginalWidth*1, -mOriginalHeight*1,
496497
mOriginalWidth*2, mOriginalHeight*2);
497498
Rect inner = new Rect(0, 0, mOriginalWidth, mOriginalHeight);
498-
mCustomBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 3);
499+
mCustomBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 3,
500+
layerStack);
499501
mCustomBlackFrame.setMatrix(mFrameInitialMatrix);
500502
} catch (Surface.OutOfResourcesException e) {
501503
Slog.w(TAG, "Unable to allocate black surface", e);
@@ -525,7 +527,8 @@ private boolean startAnimation(SurfaceSession session, long maxAnimationDuration
525527
Rect outer = new Rect(-mOriginalWidth*1, -mOriginalHeight*1,
526528
mOriginalWidth*2, mOriginalHeight*2);
527529
Rect inner = new Rect(0, 0, mOriginalWidth, mOriginalHeight);
528-
mExitingBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 2);
530+
mExitingBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 2,
531+
layerStack);
529532
mExitingBlackFrame.setMatrix(mFrameInitialMatrix);
530533
} catch (Surface.OutOfResourcesException e) {
531534
Slog.w(TAG, "Unable to allocate black surface", e);
@@ -547,7 +550,8 @@ private boolean startAnimation(SurfaceSession session, long maxAnimationDuration
547550
Rect outer = new Rect(-finalWidth*1, -finalHeight*1,
548551
finalWidth*2, finalHeight*2);
549552
Rect inner = new Rect(0, 0, finalWidth, finalHeight);
550-
mEnteringBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER);
553+
mEnteringBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER,
554+
layerStack);
551555
} catch (Surface.OutOfResourcesException e) {
552556
Slog.w(TAG, "Unable to allocate black surface", e);
553557
} finally {

services/java/com/android/server/wm/WindowAnimator.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ static class AnimatorToLayoutParams {
103103
/** Do not modify unless holding mService.mWindowMap or this and mAnimToLayout in that order */
104104
final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams();
105105

106+
boolean mInitialized = false;
107+
106108
WindowAnimator(final WindowManagerService service) {
107109
mService = service;
108110
mContext = service.mContext;
@@ -121,10 +123,13 @@ public void run() {
121123
}
122124
}
123125
};
126+
}
124127

128+
void initializeLocked(final int layerStack) {
125129
mWindowAnimationBackgroundSurface =
126-
new DimSurface(mService.mFxSession, Display.DEFAULT_DISPLAY);
127-
mDimAnimator = new DimAnimator(mService.mFxSession, Display.DEFAULT_DISPLAY);
130+
new DimSurface(mService.mFxSession, layerStack);
131+
mDimAnimator = new DimAnimator(mService.mFxSession, layerStack);
132+
mInitialized = true;
128133
}
129134

130135
/** Locked on mAnimToLayout */
@@ -563,6 +568,9 @@ private void performAnimationsLocked(final WinAnimatorList winAnimatorList) {
563568
// TODO(cmautner): Change the following comment when no longer locked on mWindowMap */
564569
/** Locked on mService.mWindowMap and this. */
565570
private void animateLocked() {
571+
if (!mInitialized) {
572+
return;
573+
}
566574
for (int i = mWinAnimatorLists.size() - 1; i >= 0; i--) {
567575
animateLocked(mWinAnimatorLists.get(i));
568576
}

0 commit comments

Comments
 (0)