summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-01-26 18:29:38 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-26 18:29:38 -0800
commit9c8307fb19558ffe2e897bad009fb038bb9e845b (patch)
tree2b4d27628ccd39d9858e85a603b6e563acad0e7e /core
parentda597b5c1a6553a43f1e938ef87b29c8f2a59386 (diff)
parentf2499fa434521a8948387afe8f0acd4f39620500 (diff)
downloadframeworks_base-9c8307fb19558ffe2e897bad009fb038bb9e845b.zip
frameworks_base-9c8307fb19558ffe2e897bad009fb038bb9e845b.tar.gz
frameworks_base-9c8307fb19558ffe2e897bad009fb038bb9e845b.tar.bz2
Merge "Make sure that we update SurfaceView's window with display lists. Bug #3395487" into honeycomb
Diffstat (limited to 'core')
-rw-r--r--core/java/android/view/SurfaceView.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 8a95664..988ccef 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -163,7 +163,18 @@ public class SurfaceView extends View {
boolean mUpdateWindowNeeded;
boolean mReportDrawNeeded;
private Translator mTranslator;
-
+
+ private final ViewTreeObserver.OnPreDrawListener mDrawListener =
+ new ViewTreeObserver.OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ // reposition ourselves where the surface is
+ mHaveFrame = true;
+ updateWindow(false, false);
+ return true;
+ }
+ };
+
public SurfaceView(Context context) {
super(context);
init();
@@ -201,7 +212,9 @@ public class SurfaceView extends View {
mLayout.token = getWindowToken();
mLayout.setTitle("SurfaceView");
mViewVisibility = getVisibility() == VISIBLE;
- getViewTreeObserver().addOnScrollChangedListener(mScrollChangedListener);
+ ViewTreeObserver observer = getViewTreeObserver();
+ observer.addOnScrollChangedListener(mScrollChangedListener);
+ observer.addOnPreDrawListener(mDrawListener);
}
@Override
@@ -262,7 +275,9 @@ public class SurfaceView extends View {
@Override
protected void onDetachedFromWindow() {
- getViewTreeObserver().removeOnScrollChangedListener(mScrollChangedListener);
+ ViewTreeObserver observer = getViewTreeObserver();
+ observer.removeOnScrollChangedListener(mScrollChangedListener);
+ observer.removeOnPreDrawListener(mDrawListener);
mRequestedVisible = false;
updateWindow(false, false);
mHaveFrame = false;
@@ -346,9 +361,6 @@ public class SurfaceView extends View {
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
}
}
- // reposition ourselves where the surface is
- mHaveFrame = true;
- updateWindow(false, false);
super.dispatchDraw(canvas);
}