From 6614238071bd31943c0fa50904e0bb3f4dc0d408 Mon Sep 17 00:00:00 2001 From: Chris Lord Date: Thu, 30 Oct 2014 15:12:11 +0000 Subject: [PATCH] Bug 974125 - Use RepaintFrame change hint for will-change. r=dbaron --- layout/style/nsStyleStruct.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp index abfe6fedd153..06add505587c 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp @@ -2815,15 +2815,17 @@ nsChangeHint nsStyleDisplay::CalcDifference(const nsStyleDisplay& aOther) const } } + // Note that the HasTransformStyle() != aOther.HasTransformStyle() + // test above handles relevant changes in the + // NS_STYLE_WILL_CHANGE_TRANSFORM bit, which in turn handles frame + // reconstruction for changes in the containing block of + // fixed-positioned elements. Other than that, all changes to + // 'will-change' can be handled by a repaint. uint8_t willChangeBitsChanged = mWillChangeBitField ^ aOther.mWillChangeBitField; - if (willChangeBitsChanged & NS_STYLE_WILL_CHANGE_STACKING_CONTEXT) { + if (willChangeBitsChanged) { NS_UpdateHint(hint, nsChangeHint_RepaintFrame); } - if (willChangeBitsChanged & ~uint8_t(NS_STYLE_WILL_CHANGE_STACKING_CONTEXT)) { - // FIXME (Bug 974125): Don't reconstruct the frame - NS_UpdateHint(hint, nsChangeHint_ReconstructFrame); - } // Note: Our current behavior for handling changes to the // transition-duration, transition-delay, and transition-timing-function