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

Commit e6875f15 authored by Alan Viverette's avatar Alan Viverette
Browse files

Temporary fix for background invalidation

Not a complete solution, since we could be more efficient, but enough
to have both background display lists and proper invalidation.

Change-Id: I0216a104948c0930760275bb2b98318b0a4487e7
parent 143b46d5
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -15359,11 +15359,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    public void invalidateDrawable(Drawable drawable) {
        if (verifyDrawable(drawable)) {
            if (drawable == mBackground && mBackgroundDisplayList != null) {
                // If we're using a background display list, we only need to
                // invalidate the display list and notify the parent to redraw.
                // We'll need to redraw the display list.
                mBackgroundDisplayList.clear();
                invalidateViewProperty(true, false);
            } else {
            }
            final Rect dirty = drawable.getBounds();
            final int scrollX = mScrollX;
            final int scrollY = mScrollY;
@@ -15372,7 +15371,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                    dirty.right + scrollX, dirty.bottom + scrollY);
        }
    }
    }
    /**
     * Schedules an action on a drawable to occur at a specified time.
@@ -15382,6 +15380,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @param when the time at which the action must occur. Uses the
     *        {@link SystemClock#uptimeMillis} timebase.
     */
    @Override
    public void scheduleDrawable(Drawable who, Runnable what, long when) {
        if (verifyDrawable(who) && what != null) {
            final long delay = when - SystemClock.uptimeMillis();
@@ -15401,6 +15400,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @param who the recipient of the action
     * @param what the action to cancel
     */
    @Override
    public void unscheduleDrawable(Drawable who, Runnable what) {
        if (verifyDrawable(who) && what != null) {
            if (mAttachInfo != null) {
+14 −2
Original line number Diff line number Diff line
@@ -4814,6 +4814,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

    @Override
    public void invalidateDrawable(Drawable drawable) {
        boolean handled = false;

        if (verifyDrawable(drawable)) {
            final Rect dirty = drawable.getBounds();
            int scrollX = mScrollX;
@@ -4831,6 +4833,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

                    scrollX += mPaddingLeft;
                    scrollY += compoundPaddingTop + (vspace - drawables.mDrawableHeightLeft) / 2;
                    handled = true;
                } else if (drawable == drawables.mDrawableRight) {
                    final int compoundPaddingTop = getCompoundPaddingTop();
                    final int compoundPaddingBottom = getCompoundPaddingBottom();
@@ -4838,6 +4841,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

                    scrollX += (mRight - mLeft - mPaddingRight - drawables.mDrawableSizeRight);
                    scrollY += compoundPaddingTop + (vspace - drawables.mDrawableHeightRight) / 2;
                    handled = true;
                } else if (drawable == drawables.mDrawableTop) {
                    final int compoundPaddingLeft = getCompoundPaddingLeft();
                    final int compoundPaddingRight = getCompoundPaddingRight();
@@ -4845,6 +4849,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

                    scrollX += compoundPaddingLeft + (hspace - drawables.mDrawableWidthTop) / 2;
                    scrollY += mPaddingTop;
                    handled = true;
                } else if (drawable == drawables.mDrawableBottom) {
                    final int compoundPaddingLeft = getCompoundPaddingLeft();
                    final int compoundPaddingRight = getCompoundPaddingRight();
@@ -4852,14 +4857,21 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

                    scrollX += compoundPaddingLeft + (hspace - drawables.mDrawableWidthBottom) / 2;
                    scrollY += (mBottom - mTop - mPaddingBottom - drawables.mDrawableSizeBottom);
                    handled = true;
                }
            }

            if (handled) {
                invalidate(dirty.left + scrollX, dirty.top + scrollY,
                        dirty.right + scrollX, dirty.bottom + scrollY);
            }
        }

        if (!handled) {
            super.invalidateDrawable(drawable);
        }
    }

    @Override
    public boolean hasOverlappingRendering() {
        // horizontal fading edge causes SaveLayerAlpha, which doesn't support alpha modulation