summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author yang.xa.liu <yang.xa.liu@sonymobile.com> 2015-12-18 16:40:31 +0800
committer Takahiro Aizawa <takahiro.aizawa@sonymobile.com> 2015-12-25 13:51:31 +0900
commit40d73a799732110b75d33faa707412821c680b50 (patch)
tree5ffe1e2cd08496e951eb3ef9294783bb620ee5e0
parente0e81bf407508ec096c752948f8794af5fd480ca (diff)
Make sure NaturalSurfaceLayout is consistent with SurfaceControl
SurfaceControl and NaturalSurfaceLayout will be created in screen-off mode. Screen-on animation also creates NaturalSurfaceLayout. And NaturalSurfaceLayout uses the reference of SurfaceControl. SurfaceControl points to NULL when screen-on process calls destory function, which will not be called in screen-off process. It makes NaturalSurfaceLayout's member points to the SurfaceControl with NULL. Crash occurs by accessing the destroyed SurfaceControl. This CL makes the creation of SurfaceControl and NaturalSurfaceLayout to one-to-one. Change-Id: Ic47ea73dea67d2aba4e3e0766d1353198d7dff1d
-rw-r--r--services/core/java/com/android/server/display/ColorFade.java16
1 files changed, 8 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/display/ColorFade.java b/services/core/java/com/android/server/display/ColorFade.java
index 835ba1734da3..a16fcd2fa112 100644
--- a/services/core/java/com/android/server/display/ColorFade.java
+++ b/services/core/java/com/android/server/display/ColorFade.java
@@ -587,16 +587,16 @@ final class ColorFade {
Slog.e(TAG, "Unable to create surface.", ex);
return false;
}
- }
- mSurfaceControl.setLayerStack(mDisplayLayerStack);
- mSurfaceControl.setSize(mDisplayWidth, mDisplayHeight);
- mSurface = new Surface();
- mSurface.copyFrom(mSurfaceControl);
+ mSurfaceControl.setLayerStack(mDisplayLayerStack);
+ mSurfaceControl.setSize(mDisplayWidth, mDisplayHeight);
+ mSurface = new Surface();
+ mSurface.copyFrom(mSurfaceControl);
- mSurfaceLayout = new NaturalSurfaceLayout(mDisplayManagerInternal,
- mDisplayId, mSurfaceControl);
- mSurfaceLayout.onDisplayTransaction();
+ mSurfaceLayout = new NaturalSurfaceLayout(mDisplayManagerInternal,
+ mDisplayId, mSurfaceControl);
+ mSurfaceLayout.onDisplayTransaction();
+ }
} finally {
SurfaceControl.closeTransaction();
}