summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2012-05-13 23:50:32 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-13 23:50:32 -0700
commit7ed1d6613e2f5aa05158a87888f5a6474eca5cc1 (patch)
tree4010fcd3109a29fd143c1fc8e771a05bae6b8345 /core/java/android
parenta545db353466ed35f6ca4564d80744d6d59fba00 (diff)
parentcbeb33249d5beec7903f18269c991a5515c5d981 (diff)
downloadframeworks_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/android')
-rw-r--r--core/java/android/view/SurfaceView.java12
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);
}