Skip to content

Commit 6715d1e

Browse files
Craig MautnerAndroid (Google) Code Review
authored andcommitted
Merge "Clean up displayId and layerStack usage." into jb-mr1-dev
2 parents 03f482c + b47bbc3 commit 6715d1e

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)