Merge "Prevent callbacks during DrawableContainer child initialization" into nyc-dev

This commit is contained in:
Alan Viverette
2016-05-26 21:20:01 +00:00
committed by Android (Google) Code Review

View File

@@ -500,6 +500,13 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
* @param d The drawable to initialize. * @param d The drawable to initialize.
*/ */
private void initializeDrawableForDisplay(Drawable d) { private void initializeDrawableForDisplay(Drawable d) {
// Temporary fix for suspending callbacks during initialization. We
// don't want any of these setters causing an invalidate() since that
// may call back into DrawableContainer.
final Callback cb = d.getCallback();
d.setCallback(null);
try {
if (mDrawableContainerState.mEnterFadeDuration <= 0 && mHasAlpha) { if (mDrawableContainerState.mEnterFadeDuration <= 0 && mHasAlpha) {
d.setAlpha(mAlpha); d.setAlpha(mAlpha);
} }
@@ -529,6 +536,9 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
d.setHotspotBounds(hotspotBounds.left, hotspotBounds.top, d.setHotspotBounds(hotspotBounds.left, hotspotBounds.top,
hotspotBounds.right, hotspotBounds.bottom); hotspotBounds.right, hotspotBounds.bottom);
} }
} finally {
d.setCallback(cb);
}
} }
void animate(boolean schedule) { void animate(boolean schedule) {