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

Commit e2af5c88 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Fix issue #2438457: Resolving Flash artifacts while scrolling.

When the surface view scrolls off the screen it stops drawing, so
we stop moving it.  Add an observer to scrolls so we can continue
to update its position.

Change-Id: I2604cbbecd3e72be1a2a6bc5794e3e1c19317b9e
parent 9db133cb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -121984,7 +121984,7 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="message" type="java.lang.String">
<parameter name="text" type="java.lang.String">
</parameter>
</method>
</class>
+9 −6
Original line number Diff line number Diff line
@@ -124,6 +124,13 @@ public class SurfaceView extends View {
        }
    };
    
    final ViewTreeObserver.OnScrollChangedListener mScrollChangedListener
            = new ViewTreeObserver.OnScrollChangedListener() {
                    public void onScrollChanged() {
                        updateWindow(false);
                    }
            };
            
    boolean mRequestedVisible = false;
    boolean mWindowVisibility = false;
    boolean mViewVisibility = false;
@@ -180,6 +187,7 @@ public class SurfaceView extends View {
        mLayout.token = getWindowToken();
        mLayout.setTitle("SurfaceView");
        mViewVisibility = getVisibility() == VISIBLE;
        getViewTreeObserver().addOnScrollChangedListener(mScrollChangedListener);
    }

    @Override
@@ -200,6 +208,7 @@ public class SurfaceView extends View {
    
    @Override
    protected void onDetachedFromWindow() {
        getViewTreeObserver().removeOnScrollChangedListener(mScrollChangedListener);
        mRequestedVisible = false;
        updateWindow(false);
        mHaveFrame = false;
@@ -223,12 +232,6 @@ public class SurfaceView extends View {
        setMeasuredDimension(width, height);
    }
    
    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        updateWindow(false);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);