Commit Graph

59 Commits

Author SHA1 Message Date
Andreea Pavel
dbd394ae9e Backed out 2 changesets (bug 1504065) for failing Win reftest at child-in-animating-element-display-none.html on a CLOSED TREE
Backed out changeset 129188370231 (bug 1504065)
Backed out changeset 359e81b35cfb (bug 1504065)
2018-11-27 15:33:29 +02:00
Hiroyuki Ikezoe
b0ee38c41e Bug 1504065 - Support background-color animations on the compositor for nsIDOMWindowUtils::GetOMTAValue. r=birtles
Depends on D13001

Differential Revision: https://phabricator.services.mozilla.com/D13002
2018-11-27 09:27:22 +00:00
Hiroyuki Ikezoe
678e8d5615 Bug 1504065 - Run background-color animations on the compositor. r=birtles
Changes for nsIDOMWindowUtils.getOMTAValue is in the next commit with come test
cases.

Differential Revision: https://phabricator.services.mozilla.com/D13001
2018-11-27 09:26:51 +00:00
Brian Birtles
a44aeef935 Bug 1495350 - Adjust fill mode to use on the compositor based on the playback rate; r=hiro
When a compositor animation finishes that doesn't apply a fill, rather than
jumping back to the underlying value immediately we should apply a fill mode
until the main thread has a chance to remove the animation from the compositor.
This ensures that any main thread effects that are intended to synchronize with
the end of the animation have a chance to run before we show the underlying
style and helps to avoid flicker in such cases.

Currently we apply this synthesized fill mode to animations when they run
forwards (i.e. positive playback rate), but not backwards. This patch makes us
apply the same handling when running in reverse.

Differential Revision: https://phabricator.services.mozilla.com/D7259
2018-10-05 05:43:49 +00:00
shindli
91fb371405 Backed out changeset 113f6263774f (bug 1495350) for TV failures that turned to tier1 failures in dom/animation/test/mozilla/test_style_after_finished_on_compositor.html 2018-10-04 11:15:37 +03:00
Brian Birtles
4c5ad3e90b Bug 1495350 - Adjust fill mode to use on the compositor based on the playback rate; r=hiro
When a compositor animation finishes that doesn't apply a fill, rather than
jumping back to the underlying value immediately we should apply a fill mode
until the main thread has a chance to remove the animation from the compositor.
This ensures that any main thread effects that are intended to synchronize with
the end of the animation have a chance to run before we show the underlying
style and helps to avoid flicker in such cases.

Currently we apply this synthesized fill mode to animations when they run
forwards (i.e. positive playback rate), but not backwards. This patch makes us
apply the same handling when running in reverse.

Differential Revision: https://phabricator.services.mozilla.com/D7259
2018-10-04 05:10:38 +00:00
Ting-Yu Lin
bafef62622 Bug 1482665 Part 4 - Remove nsDeviceContext::AppUnitsPerCSSPixel() and replace it with mozilla::AppUnitsPerCSSPixel(). r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D3157
2018-08-13 14:29:30 -07:00
Hiroyuki Ikezoe
6168d4c77d Bug 1479234 - Drop GetAnimationOpacity and GetAnimationTransform ipc calls. r=boris,froydnj
They are no longer used.

MozReview-Commit-ID: 1SaIkj4ryUF
2018-07-31 06:13:15 +09:00
Hiroyuki Ikezoe
25ee7c636d Bug 1479234 - Introduce a generic function to get an animation value on the compositor. r=boris,froydnj
On the compositor we store animation values in a hash table and the hash is
the compositor animation id which is a unique id for each property respectively.
So we can get the corresponding animation value for the given property.

In this patch there are lots of duplicated code, but they will be removed in the
next patch.

MozReview-Commit-ID: 7EboVcculcg
2018-07-31 06:13:15 +09:00
Coroiu Cristina
cd83311c24 Backed out 4 changesets (bug 1479234) for build bustage at build/src/gfx/vr/ipc/VRLayerChild.cpp on a CLOSED TREE
Backed out changeset 6ecc1666f571 (bug 1479234)
Backed out changeset c3bab1bc97cf (bug 1479234)
Backed out changeset c8c2625a33ba (bug 1479234)
Backed out changeset 2ffc8e9d5686 (bug 1479234)
2018-07-31 00:32:04 +03:00
Hiroyuki Ikezoe
f41857c497 Bug 1479234 - Drop GetAnimationOpacity and GetAnimationTransform ipc calls. r=boris,froydnj
They are no longer used.

MozReview-Commit-ID: 1SaIkj4ryUF
2018-07-31 06:13:15 +09:00
Hiroyuki Ikezoe
00231dd480 Bug 1479234 - Introduce a generic function to get an animation value on the compositor. r=boris,froydnj
On the compositor we store animation values in a hash table and the hash is
the compositor animation id which is a unique id for each property respectively.
So we can get the corresponding animation value for the given property.

In this patch there are lots of duplicated code, but they will be removed in the
next patch.

MozReview-Commit-ID: 7EboVcculcg
2018-07-31 06:13:15 +09:00
Miko Mynttinen
3df26bc8a5 Bug 1465060 - Part 1: Fix warnings for std::move() use r=froydnj
MozReview-Commit-ID: HpdFXqQdIOO
2018-06-01 17:59:07 +02:00
arthur.iakab
9588ba6d78 Backed out 2 changesets (bug 1465060) for build bustages on security/sandbox/linux/reporter/SandboxReporter.cpp
Backed out changeset 7c8905b6b226 (bug 1465060)
Backed out changeset 10446073eca8 (bug 1465060)
2018-06-03 19:25:41 +03:00
Miko Mynttinen
5afe37aefc Bug 1465060 - Part 1: Fix warnings for std::move() use r=froydnj
MozReview-Commit-ID: HpdFXqQdIOO
2018-06-01 17:59:07 +02:00
Emilio Cobos Álvarez
4b8b5e1717 Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Brian Birtles
033b8ba988 Bug 1456394 - Rename AnimationEffectReadOnly to AnimationEffect; r=bz,hiro
MozReview-Commit-ID: 8jzJiCWt5vs
2018-05-07 11:15:16 +09:00
Brian Birtles
b48a10996d Bug 1456394 - Merge KeyframeEffectReadOnly and KeyframeEffect; r=bz,hiro
MozReview-Commit-ID: FvTMGjxfRXk
2018-05-07 11:08:59 +09:00
Brian Birtles
1319f89405 Bug 1456394 - Rename KeyframeEffectReadOnly.{h,cpp} to KeyframeEffect.{h,cpp}; r=bz,hiro
MozReview-Commit-ID: 5Q7oQV8vmgS
2018-05-07 11:07:06 +09:00
Hiroyuki Ikezoe
5c683720da Bug 1459895 - Avoid underflow in TimeStamp in the middle of the calcuration of animation's ready time. r=birtles
MozReview-Commit-ID: EsvEIHGMXUa
2018-05-09 10:47:51 +09:00
Hiroyuki Ikezoe
5d9c74e4b5 Bug 1456679 - Make SampleAnimations return boolean to tell there is any animations even if the animation in delay phase. r=kats
If the animation is in delay phase, we shouldn't produce any values for the
animation but we have to make sure subsequent ticks happen in order to the time
when the animation starts.  So what we should do here is that

1) Make AnimationHelper::SampleAnimations() return boolean, return true if
   there is any animation.
2) Schedule the next tick if AnimationHelper::SampleAnimations return true

This setup is equivalent to what we do non-WebRender.

So that we don't need to set non-animated value as AnimatedValue for delay
phase to make subsequent ticks happen for the delay phase animations.  The
non-animated value will be dropped in the next patch.

MozReview-Commit-ID: IwltLGgvT7K
2018-05-08 15:48:27 +09:00
Hiroyuki Ikezoe
999ddde682 Bug 1458457 - Use the current frame time stamp instead of the previous frame's time stamp in the case where the animation was play pending state when the animation was sent to the compositor. r=birtles
When we send play-pending animation to the compositor, we resolve its start
time with the time at the very moment we send the animation to the compositor
instead of refresh drivers' tick time.  That means that it's possible that the
start time indicates more future time stamp than the previous frame time stamp
on the compositor.  If we were to use the previous frame timestamp in this
case, then we'd end up treating the animation as if it had not yet started so
we would skip its initial paint.

MozReview-Commit-ID: 8TdZ6m0gqMm
2018-05-08 16:58:06 +09:00
Hiroyuki Ikezoe
64245bf502 Bug 1458457 - Move the logic that we use whether the previous time stamp or the last compose time stamp into SampleAnimationForEachNode. r=birtles
So that we can do an additional check depending on each animation in a subsequent
patch in this patch series.

MozReview-Commit-ID: C1ZJMdwraVk
2018-05-08 12:58:42 +09:00
Hiroyuki Ikezoe
d31abdea5a Bug 1457249 - Use actually calculated value for the assertion that checks animation value is unchanged when we decided to skip calculation for the animation on debug build. r=kats
Before this change, the value which was set by SetShadowBaseTransform()
has been used for the assertion, but it is possible that the value is changed
by APZ.  And it's hard to tell whether the value has been changed by APZ or not
and it's hard to *reverse-calculate* the differences in the past APZ at the
moment we want to do the assert.

So after this patch, on debug build we don't actually skip the calculation for
unchanged animations and use the newly calculated value for the assertion.

MozReview-Commit-ID: 8fCcvvbUMHe
2018-04-28 18:09:27 +09:00
Dorel Luca
642a3c7930 Backed out 2 changesets (bug 1456679) for Reftests failure. CLOSED TREE
Backed out changeset c40209504a45 (bug 1456679)
Backed out changeset 351ae90cc6a0 (bug 1456679)
2018-04-26 05:07:47 +03:00
Hiroyuki Ikezoe
2da9ef01f1 Bug 1456679 - Make SampleAnimations return boolean to tell there is any animations even if the animation in delay phase. r=kats
If the animation is in delay phase, we shouldn't produce any values for the
animation but we have to make sure subsequent ticks happen in order to the time
when the animation starts.  So what we should do here is that

1) Make AnimationHelper::SampleAnimations() return boolean, return true if
   there is any animation.
2) Schedule the next tick if AnimationHelper::SampleAnimations return true

This setup is equivalent to what we do non-WebRender.

So that we don't need to set non-animated value as AnimatedValue for delay
phase to make subsequent ticks happen for the delay phase animations.  The
non-animated value will be dropped in the next patch.

MozReview-Commit-ID: IwltLGgvT7K
2018-04-26 08:28:44 +09:00
Hiroyuki Ikezoe
d7f0162139 Bug 1456003 - Don't allocate new AnimatedValue when we update AnimatedValue. r=kats
We need to allocate new AnimatedValue only if there is no AnimatedValue
corresponding to the id in the hashtable.

MozReview-Commit-ID: HeRt74Tnojt
2018-04-24 15:13:10 +09:00
Hiroyuki Ikezoe
302c271b0f Bug 1454324 - Skip calculating animation value if animation's progress value hasn't been changed since the last composition and if there are no other animations on the same element. r=birtles,kats
Note that we have to calculate animation values if there is another animation
since the other animation might be 'accumulate' or 'add', or might have a
missing keyframe (i.e. the calculated animation values will be used in the
missing keyframe).

MozReview-Commit-ID: rQyS9nuVJi
2018-04-24 09:27:54 +09:00
Hiroyuki Ikezoe
0df336123e Bug 1454324 - Cache animation TimingParams on the compositor. r=birtles
We don't need to calculate TimingParams each time we compose an animation on
the compositor because TimingParams is immobile since the animation was sent to
the compositor.

MozReview-Commit-ID: 3rfzkdGClES
2018-04-24 09:27:53 +09:00
Hiroyuki Ikezoe
dddfed71b4 Bug 1455155 - Drop AnimationValue usage in gfx/. r=birtles
Two AnimationValue are still used in AnimationPropertySegment since the
AnimationPropertySegment is used in compose_animation_segment() which is also
invoked on the main-thread, so we will fix it later in a bug that will drop
AnimationValue usage on the main-thread side.

MozReview-Commit-ID: B086g2qHtZL
2018-04-19 13:50:14 +09:00
Hiroyuki Ikezoe
916a26357f Bug 1454550 - Call AnimationHelper::SampleAnimationForEachNode only for layers that have animations. r=kats
This is slightly efficient since we don't need to call
GetBaseAnimationStyle() or we do skip allocating animation data for such case.

MozReview-Commit-ID: BYFNwZsZ1oE
2018-04-17 13:20:33 +09:00
Boris Zbarsky
44c196b672 Bug 1449631 part 12. Remove the Nullable smuggling from nsIDOMEventTarget. r=smaug
MozReview-Commit-ID: 73qhRSCpr3S
2018-04-05 13:42:42 -04:00
Xidorn Quan
d03cde8f6e Bug 1447828 part 8 - Remove remaining uses of StyleBackendType as well as the type itself. r=emilio
MozReview-Commit-ID: 6sh4eKvDpRF
2018-03-29 02:34:34 +11:00
Emilio Cobos Álvarez
b4bf93ae9a Bug 1446108: Don't create bogus angles in layers animation code. r=kats
Summary:
I can propagate the error up if needed, but looks like the code should cope with
it just fine with this change.

Reviewers: kats

Bug #: 1446108

Differential Revision: https://phabricator.services.mozilla.com/D794

MozReview-Commit-ID: Dm6EKIC6F5i
2018-03-23 19:09:42 +01:00
Brindusan Cristian
41ae37cd29 Backed out 2 changesets (bug 1446108) for build bustages on build\src\obj-firefox\dist\include\mozilla/Alignment.h(29) CLOSED TREE
Backed out changeset 08814c30af6d (bug 1446108)
Backed out changeset 7977451e9641 (bug 1446108)
2018-03-23 18:44:07 +02:00
Emilio Cobos Álvarez
660bdbb6cb Bug 1446108: Don't create bogus angles in layers animation code. r=kats
Summary:
I can propagate the error up if needed, but looks like the code should cope with
it just fine with this change.

Reviewers: kats

Bug #: 1446108

Differential Revision: https://phabricator.services.mozilla.com/D794

MozReview-Commit-ID: Dm6EKIC6F5i
2018-03-23 16:40:55 +01:00
Emilio Cobos Álvarez
b1a35fbef7 Bug 1447358: Unifdef the old style system code. r=jwatt
Summary:
This has been automatically generated using:

  http://dotat.at/prog/unifdef/

And:

find $OBJDIR -type f -name '*.h' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

find $OBJDIR -type f -name '*.cpp' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

MozReview-Commit-ID: I4NdKqbMXzJ

Reviewers: jwatt

Bug #: 1447358

Differential Revision: https://phabricator.services.mozilla.com/D779
2018-03-21 10:20:34 +01:00
Cameron McCormack
f2d37b44c3 Bug 1430014 - Part 6: #ifdef out a bit more animation-related code. r=hiro
MozReview-Commit-ID: B9TaVJFak26
2018-02-01 15:04:04 +11:00
Boris Chiou
239d4d60e5 Bug 1340005 - Part 7: Switch compositor animations to Servo backend for desktop. r=birtles,hiro,nical
We want to always use Servo animation backend on the compositor.
However, Android doesn't support Stylo now, so add a defined flag for it.

MozReview-Commit-ID: 63MnTBnq6yv
2017-10-27 21:13:27 +02:00
Boris Chiou
555e9cc520 Bug 1340005 - Part 6: Move AppendTransformFunction into AnimationValue struct. r=birtles
MozReview-Commit-ID: KhjKXxkllEF
2017-10-17 13:11:19 +08:00
Boris Chiou
0cd271ded0 Bug 1340005 - Part 5: Implement SampleValue for Servo backend. r=birtles
Use the new added FFI, Servo_ComposeAnimationSegment, to compose an
animation segment from Servo backend on the compositor.

MozReview-Commit-ID: LNgpCSIlDl9
2017-10-27 21:09:11 +02:00
Boris Chiou
462458b3e6 Bug 1340005 - Part 4: Retrieve transform list from AnimationValue. r=birtles
MozReview-Commit-ID: 82NAOBV2rEl
2017-09-25 14:25:43 +08:00
Boris Chiou
63c95da28b Bug 1340005 - Part 3: Use AnimationValue on the compositor thread. r=birtles
MozReview-Commit-ID: CtnDLsdcr9x
2017-09-21 17:01:48 +08:00
Boris Chiou
f8a7935638 Bug 1340005 - Part 2: Implement AnimationValue::Transform. r=birtles
MozReview-Commit-ID: BDKcpDIM9nb
2017-10-27 21:06:30 +02:00
Boris Chiou
b13594b463 Bug 1340005 - Part 1: Implement AnimationValue::Opacity. r=birtles
We will use Servo backend on the compositor, so implement this for opacity.

MozReview-Commit-ID: BeWR2nBSbjb
2017-10-27 21:04:52 +02:00
Hiroyuki Ikezoe
ea1f59508f Bug 1399714 - Iterate animation segments for setting start/end values and timing functions just once. r=boris
MozReview-Commit-ID: 7ySuFcSi3cH
2017-09-14 12:59:06 +09:00
Kartikaya Gupta
70239514ba Bug 1375497 - Extract helper methods to read animation values. r=pchang
MozReview-Commit-ID: EusfcwPVGkL
2017-06-27 20:29:06 -04:00
Hiroyuki Ikezoe
a12912d16f Bug 1374882 - Add a TimingParams ctor on the compositor. r=birtles
MozReview-Commit-ID: BFiwrphRND0
2017-06-22 12:12:42 +09:00
Boris Chiou
d6fceef5a5 Bug 1361663 - Part 1: Use double instead of float for the progress of interpolation. r=birtles
We get the progress as |double|, and then pass it to a function by a |float|
type, and then finally cast it back to |double| for the interpolation.
We should avoid casting it back and forth, so change the function argument to
use |double| type for the progress.

MozReview-Commit-ID: 7QzfVBC7hSt
2017-05-22 13:35:15 +08:00
Brian Birtles
13e9d82970 Bug 1363107 - Check if the startTime is set before using it in SampleAnimationForEachNode; r=hiro
We are seeing occasional failed release assertions from calling
animation.startTime().get_TimeDuration() in SampleAnimationForEachNode on
Windows.

My theory is that in some circumstances (perhaps graphic-driver related?) when
creating a layer transaction we fail to call Layer::StartPendingAnimations and
end up sending pending animations to the compositor. Prior to bug 1334583 that
would have only triggered a debug assertion so it may have gone unnoticed if it
depends on the system configuration.

This patch makes us check that the startTime is set before we try to access it
in order to avoid triggering a release-time assertion. If the startTime is not
set we will use the hold time which should give us the correct behavior for
a still-pending animation. (Furthermore, the holdTime is set unconditionally
when we create animations so it should be correct -- but even if it were not
set explicitly, its initial zero value would still likely produce a reasonable
result until the start time was updated on a subsequent layer transaction. At
very least, it should not crash. Likewise, if it was set to an incorrect value.)

This patch also strengthens the debug assertion in SampleAnimationForEachNode to
check that not only is start time not-null, but that it is set to a TimeDuration
since MaybeTimeDuration also includes a third uninitialized "None" state.
2017-05-18 14:06:36 +09:00