Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0518e7b5 authored by Romain Guy's avatar Romain Guy Committed by Android Git Automerger
Browse files

am 9c8307fb: Merge "Make sure that we update SurfaceView\'s window with...

am 9c8307fb: Merge "Make sure that we update SurfaceView\'s window with display lists. Bug #3395487" into honeycomb

* commit '9c8307fb':
  Make sure that we update SurfaceView's window with display lists. Bug #3395487
parents 0517ea2a 9c8307fb
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -164,6 +164,17 @@ public class SurfaceView extends View {
    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);
    }