diff options
| author | Mathias Agopian <mathias@google.com> | 2012-05-13 23:50:32 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-13 23:50:32 -0700 |
| commit | 7ed1d6613e2f5aa05158a87888f5a6474eca5cc1 (patch) | |
| tree | 4010fcd3109a29fd143c1fc8e771a05bae6b8345 /core/java | |
| parent | a545db353466ed35f6ca4564d80744d6d59fba00 (diff) | |
| parent | cbeb33249d5beec7903f18269c991a5515c5d981 (diff) | |
| download | frameworks_base-7ed1d6613e2f5aa05158a87888f5a6474eca5cc1.zip frameworks_base-7ed1d6613e2f5aa05158a87888f5a6474eca5cc1.tar.gz frameworks_base-7ed1d6613e2f5aa05158a87888f5a6474eca5cc1.tar.bz2 | |
Merge "fix SurfaceView visibility state changes" into jb-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/SurfaceView.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index f4ca9d2..fd302dc 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -230,7 +230,17 @@ public class SurfaceView extends View { public void setVisibility(int visibility) { super.setVisibility(visibility); mViewVisibility = visibility == VISIBLE; - mRequestedVisible = mWindowVisibility && mViewVisibility; + boolean newRequestedVisible = mWindowVisibility && mViewVisibility; + if (newRequestedVisible != mRequestedVisible) { + // our base class (View) invalidates the layout only when + // we go from/to the GONE state. However, SurfaceView needs + // to request a re-layout when the visibility changes at all. + // This is needed because the transparent region is computed + // as part of the layout phase, and it changes (obviously) when + // the visibility changes. + requestLayout(); + } + mRequestedVisible = newRequestedVisible; updateWindow(false, false); } |
