diff options
| author | Romain Guy <romainguy@google.com> | 2011-01-26 18:29:38 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-26 18:29:38 -0800 |
| commit | 9c8307fb19558ffe2e897bad009fb038bb9e845b (patch) | |
| tree | 2b4d27628ccd39d9858e85a603b6e563acad0e7e /core | |
| parent | da597b5c1a6553a43f1e938ef87b29c8f2a59386 (diff) | |
| parent | f2499fa434521a8948387afe8f0acd4f39620500 (diff) | |
| download | frameworks_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.java | 24 |
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); } |
