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

Commit 9c8307fb authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Make sure that we update SurfaceView's window with display lists. Bug...

Merge "Make sure that we update SurfaceView's window with display lists. Bug #3395487" into honeycomb
parents da597b5c f2499fa4
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);
    }