Don't verify the scrollbar drawable

Avoids infinite invalidations caused by re-use of scrollbar drawable
during a single draw() pass. Does not address the general problem of
drawable reuse causing unnecessary invalidations as a result of calls
to setBounds() invoking invalidateSelf().

Bug: 26533725
Change-Id: I99e9c2dfe4ddfc833569e40e7268dcb03e931fc9
This commit is contained in:
Alan Viverette
2016-01-14 16:06:36 -05:00
parent e41a6c8b19
commit a53c3b2197

View File

@@ -16937,8 +16937,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
@CallSuper
protected boolean verifyDrawable(Drawable who) {
return who == mBackground || (mScrollCache != null && mScrollCache.scrollBar == who)
|| (mForegroundInfo != null && mForegroundInfo.mDrawable == who);
// Avoid verifying the scroll bar drawable so that we don't end up in
// an invalidation loop. This effectively prevents the scroll bar
// drawable from triggering invalidations and scheduling runnables.
return who == mBackground || (mForegroundInfo != null && mForegroundInfo.mDrawable == who);
}
/**