Commit Graph

171 Commits

Author SHA1 Message Date
Hiroyuki Ikezoe
45e3f56c35 Bug 1475769 - Bail out from nsRefreshDriver::Tick before updating mMostRecentRefresh when the refresh driver is waiting for paint. r=mattwoodrow
Before this patch, there is a race condition that the refresh driver updates
the most recent refresh time but animations corresponding to the refresh driver
don't update their internal state, that causes the inconsistency that such
animations are regarded as finished on the most recent time whereas their
internal states represent the animations are still in active.  This is the one
of the cause of bug 1466010, i.e. the display item corresponding to the
animation is going to be rebuilt without calling MarkNeedsDisplayItemRebuild.

MozReview-Commit-ID: 9adzDV9E3ka
2018-07-15 20:19:29 +09:00
Hiroyuki Ikezoe
b571553954 Bug 1474721 - Drop epoch times in nsRefreshDriver. r=bz
These epoch times were introduced for beforepaint event in bug 569520, and
haven't used since we dropped mozRequestAnimationFrame in bug 909154.

MozReview-Commit-ID: CGOGeH0rrdi
2018-07-11 06:15:00 +09:00
Hiroyuki Ikezoe
290c8e02f4 Bug 1472076 - Introduce nsATimerAdjustmentObserver in nsRefreshDriver. r=birtles
mMostRecentRefresh is changed not only in Tick() but also in
EnsureTimerStarted().  In the case where it happens in Tick() refresh observers
can know it through WillRefresh(), but there is no way in the case of
EnsureTimerStarted().  This patch introduces a new abstract class to be notified
when mMostRecentRefresh was changed in EnsureTimerStarted() so that animations
can use the *real* most recent refresh time until the next tick happens.

The reason why we have another observer array in parallel with existing array
(mObservers) is that the refresh driver should stop the timer if there is no
normal observes but there are still any timer adjustment observes.

MozReview-Commit-ID: FaDcl5GrvI3
2018-07-03 10:57:12 +09:00
Kartikaya Gupta
722f23494e Bug 1461946 - Remove more unused code. r=mattwoodrow
MozReview-Commit-ID: Ji5L1Ce2utN
2018-05-16 14:58:56 -04:00
Kartikaya Gupta
0fd083860a Bug 1461946 - Remove unused function and parameter. r=mattwoodrow
MozReview-Commit-ID: CJ9ObpuRJCD
2018-05-16 08:32:18 -04:00
Bobby Holley
2e2c592ae1 Bug 1457325 - Expose time to DOMContentFlushed on the timeline. r=bholley,r=mstange
MozReview-Commit-ID: E6QPjgfUKdo
2018-04-27 11:15:27 -07:00
Xidorn Quan
f0a638fcfa Bug 1456364 part 1 - Reduce dependencies to nsCSSProps.h. r=emilio
So that hacking on this header can be less painful...

MozReview-Commit-ID: LmpMnF7q9RG
2018-04-26 16:24:30 +02:00
Andreea Pavel
c6bbb5991e Backed out 4 changesets (bug 1456364) for build bustages at /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/dom/AnimationEffectReadOnlyBinding.h:35 on a CLOSED TREE
Backed out changeset 020151240bb8 (bug 1456364)
Backed out changeset bc0aa5224d91 (bug 1456364)
Backed out changeset d919bbe7440c (bug 1456364)
Backed out changeset ab1472823e8a (bug 1456364)
2018-04-26 08:27:45 +03:00
Xidorn Quan
6540b4d185 Bug 1456364 part 1 - Reduce dependencies to nsCSSProps.h. r=emilio
So that hacking on this header can be less painful...

MozReview-Commit-ID: LmpMnF7q9RG
2018-04-26 15:00:50 +10:00
Kartikaya Gupta
2c0c8e1bf5 Bug 1455691 - Make the transaction id a struct instead of a uint64_t. r=mattwoodrow
MozReview-Commit-ID: 9yZknygQvFr
2018-04-20 15:13:06 -04:00
Boris Zbarsky
d54406240d Bug 1449631 part 6. Remove nsIDOMEventTarget::DispatchEvent. r=smaug
MozReview-Commit-ID: 8YMgmMwZkAL
2018-04-05 13:42:41 -04:00
Emilio Cobos Álvarez
249bc337d5 Bug 1443339: Stop observing the refresh driver when inserting into the BFCache. r=bz
The nsCSSFrameConstructor bits are now handled in PresShell::Destroy along with
the other refresh driver observers.

I cleaned up the nsRefreshDriver methods because they were using infallible
append anyway, and that simplified the logic.

MozReview-Commit-ID: 1eDUUXjUUS9
2018-03-17 16:11:52 +01:00
Hiroyuki Ikezoe
5d807148ef Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe
652a16bc3c Bug 1415780 - Don't count all observers for nsRefreshDriver. r=smaug
We just need information whether there is still an observer or not in most
cases.  The only case we need to know the count is in an assertion in the
dtor of nsRefreshDriver.  In the dtor we are checking there remains no
observers other than early runners.

Note that the order in HasObserver() was adjusted to reflect that we check
boolean flag first (mViewManagerFlushIsPending) and subsequently check observer
which is likey happen to.  mFrameRequestCallbackDocs should have checked prior
to mResizeEventFlushObservers though.

MozReview-Commit-ID: E1qplusqw1Y
2018-01-27 21:17:26 +09:00
Cosmin Sabou
f642a7b9c4 Backed out 12 changesets (bug 1415780) for build bustages nsRefreshDriver.cpp:1606:1 and AnimationCommon.h:168:51 on a CLOSED TREE
Backed out changeset 1fa2f138319e (bug 1415780)
Backed out changeset 6bad89a17566 (bug 1415780)
Backed out changeset a88250ad7a3e (bug 1415780)
Backed out changeset 43d42ca7308f (bug 1415780)
Backed out changeset 79e980195ee8 (bug 1415780)
Backed out changeset f0cc29e7ccd7 (bug 1415780)
Backed out changeset c6567e4196f6 (bug 1415780)
Backed out changeset ae7be65f3c88 (bug 1415780)
Backed out changeset 621b9aaf4a8f (bug 1415780)
Backed out changeset e298f242ce7c (bug 1415780)
Backed out changeset 027a7ed3c948 (bug 1415780)
Backed out changeset 433a6f0d0ac3 (bug 1415780)
2018-01-27 12:47:29 +02:00
Hiroyuki Ikezoe
747fb446e6 Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2
2018-01-27 16:55:45 +09:00
Hiroyuki Ikezoe
3f32d569be Bug 1415780 - Don't count all observers for nsRefreshDriver. r=smaug
We just need information whether there is still an observer or not in most
cases.  The only case we need to know the count is in an assertion in the
dtor of nsRefreshDriver.  In the dtor we are checking there remains no
observers other than early runners.

Note that the order in HasObserver() was adjusted to reflect that we check
boolean flag first (mViewManagerFlushIsPending) and subsequently check observer
which is likey happen to.  mFrameRequestCallbackDocs should have checked prior
to mResizeEventFlushObservers though.

MozReview-Commit-ID: E1qplusqw1Y
2018-01-27 16:55:42 +09:00
Hiroyuki Ikezoe
2a98cc335a Bug 1433336 - Collect only documents which are observerd by IntersectionObserver in nsRefreshDriver::Tick(). r=smaug
We don't need to collect whole descendants documents.

This patch intentionally leaves animation events handling which is another
caller of CollectDocuments in nsRefreshDriver since the animation part will
be fixed in a different way in bug 1415780.

MozReview-Commit-ID: INAJm1NHLuI
2018-01-26 20:11:17 +09:00
Olli Pettay
ecc0fbc5b8 Bug 1149555 - Update resize event firing to follow the specs, dispatch right before rAF callbacks, r=dbaron
MozReview-Commit-ID: GFnj2du2bWJ
2015-05-05 17:56:01 +03:00
Markus Stange
dc3ac1257a Bug 1350930 - Move profiler markers for reflow and style flushes from the refresh driver into the PresShell. r=bz
MozReview-Commit-ID: FQs2zsIU2zO
2017-11-15 16:10:32 -05:00
Daniel Holbert
8fea3c215f Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK
2017-10-27 10:33:53 -07:00
Nicholas Nethercote
a35e82f193 Bug 1403868 (part 4) - Reduce tools/profiler/public/*.h to almost nothing in non-MOZ_GECKO_PROFILER builds. r=mstange.
Currently the Gecko Profiler defines a moderate amount of stuff when
MOZ_GECKO_PROFILER is undefined. It also #includes various headers, including
JS ones. This is making it difficult to separate Gecko's media stack for
inclusion in Servo.

This patch greatly simplifies how things are exposed. The starting point is:

- GeckoProfiler.h can be #included unconditionally;

- everything else from the profiler must be guarded by MOZ_GECKO_PROFILER.

In practice this introduces way too many #ifdefs, so the patch loosens it by
adding no-op macros for a number of the most common operations.

The net result is that #ifdefs and macros are used a bit more, but almost
nothing is exposed in non-MOZ_GECKO_PROFILER builds (including
ProfilerMarkerPayload.h and GeckoProfiler.h), and understanding what is exposed
is much simpler than before.

Note also that in BHR, ThreadStackHelper is now entirely absent in
non-MOZ_GECKO_PROFILER builds.
2017-10-04 09:11:18 +11:00
Ethan Lin
f22d91c79b Bug 1404091 - In layers-free mode, we should do NotifyInvalidation after EndTransaction if there is any scheduled flush. r=kats
MozReview-Commit-ID: D0LNF0LgWYq
2017-10-03 16:00:38 +08:00
Wes Kocher
cec163f0db Merge m-c to autoland, a=merge
MozReview-Commit-ID: IMdYxijQ9ie
2017-08-21 17:20:06 -07:00
Stone Shih
29777f0aae Bug 1361067 Part2: Coalesce mouse move events to be once per refresh cycle. r=smaug.
MozReview-Commit-ID: 6jwQxxNIC2n
2017-08-11 14:58:08 +08:00
Botond Ballo
3f5caab980 Bug 1340684 - Fire the scroll event before the style flush. r=mstange
This ensures that if the scroll event triggers style changes, they are
reflected on the same paint.

This is accomplished by having the refresh driver fire scroll events as
an explicit step after FlushType::Style observers and rAF callbacks, and
before the actual style flush.

MozReview-Commit-ID: 4kgauD5SgVo
2017-08-09 21:08:38 -04:00
Stone Shih
419a19e980 Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Stone Shih
cb61054c6c Backed out changeset 46d8f42863af (bug 1351148) 2017-08-11 15:19:44 +08:00
Stone Shih
9477e7b2db Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Carsten "Tomcat" Book
26135cd76d Backed out changeset 284af26c1b53 (bug 1351148) 2017-07-28 09:20:27 +02:00
Stone Shih
e0dd0293e8 Bug 1351148 Part2: Add a priority queue for input events. r=smaug.
MozReview-Commit-ID: 5ud1Ex9UNVo
2017-03-21 15:44:12 +08:00
Kartikaya Gupta
efcbc5315f Bug 1378966 - Don't cause immediate throttling of the refresh driver on repeat transactions. r=mattwoodrow
MozReview-Commit-ID: 8orAmdpIRTF
2017-07-12 09:10:25 -04:00
Olli Pettay
6f309a81d2 Bug 1375491, make child process to cache ime properties only at animation tick time, r=masayuki 2017-06-29 14:46:11 +03:00
Olli Pettay
6416d12291 Bug 1375484 - ScrollSelectionIntoViewEvent should be called during refresh driver tick, r=ehsan 2017-06-25 00:38:42 +03:00
Olli Pettay
c08aeee071 Bug 1367905 - Try to run GC/CC slices, including forgetSkippable, during idle time, r=mccr8 2017-06-10 02:38:50 +03:00
Wes Kocher
d94d0e78b3 Backed out 2 changesets (bug 1367905) for a spike in Windows reftest failures a=backout
Backed out changeset c5aaa3f7b79e (bug 1367905)
Backed out changeset 1c66da2b1e88 (bug 1367905)

MozReview-Commit-ID: IX632WoWHrO
2017-06-08 16:09:28 -07:00
Olli Pettay
01a6a06f80 Bug 1367905 - Try to run GC/CC slices, including forgetSkippable, during idle time, r=mccr8 2017-06-07 23:46:31 +03:00
Carsten "Tomcat" Book
4960a7d0ca Backed out changeset ff33e6c6f6a5 (bug 1367905) for memory leaks 2017-06-07 15:13:37 +02:00
Olli Pettay
e0c64e438d Bug 1367905 - Try to run GC/CC slices, including forgetSkippable, during idle time, r=mccr8 2017-06-06 20:41:34 +03:00
Andreas Farre
133e7398de Bug 1311425 - Prepare for handling several sources of idleness, r=smaug 2017-05-24 21:11:12 -04:00
Timothy Nikkel
cafba44425 Bug 1352074. Remove high precision timer mode from refresh driver because it is not needed with vsync based refresh drivers. r=mchang
Bug 731974 added this code to get more accurate timer callbacks back when the refresh driver was based on timers. It shouldn't be needed anymore now that the refresh driver is based on vsync.
2017-04-04 00:14:28 -05:00
Samael Wang
fb90ba2dfe Bug 1283947 - Clear pending transactions when ClientLayerManager is assigning to a different refresh driver. r=mattwoodrow 2017-03-09 18:35:50 +08:00
Matt Woodrow
96389b5cf7 Bug 1302071 - Part 1: Remove AddPresShellToInvalidateIfHidden since it doesn't appear to be necessary. r=tnikkel
We added this so that MozAfterPaint events would be delivered to hidden documents as part of bug 539356, but I don't remember what needed it.
It doesn't appear to be necessary for any tests any more, so let's just get rid of it

MozReview-Commit-ID: HcmIjstZyLQ
2017-02-17 11:49:29 +13:00
Tobias Schneider
16eed66e0c Bug 1319134 - (intersection-observer) Switch from idle callback to post task. r=mstange
MozReview-Commit-ID: BJTmIWqkVn5
2017-02-08 10:34:02 -08:00
Kartikaya Gupta
a2a492cb06 Bug 1312319 - Add a NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING macro and replace existing pure-virtual AddRef/Release declarations. r=froydnj
MozReview-Commit-ID: 5yt3O4Hoois
2017-01-25 14:51:34 -05:00
Nathan Froyd
1163f53bac Bug 1142197 - manage ProfilerBacktrace with UniquePtr; r=mstange
Smart pointers are better than raw pointers.
2017-01-06 09:21:01 -05:00
Cameron McCormack
5f9911da79 Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00
Cameron McCormack
a35ad172e6 Bug 1328832 - Part 1: Rename mozFlushType.h to FlushType.h. r=bzbarsky
MozReview-Commit-ID: 1ubwNkBEdfz
2017-01-05 14:54:02 +08:00
Phil Ringnalda
f248bc19c8 Merge m-i to m-c, a=merge 2016-10-30 10:55:00 -07:00
Tobias Schneider
0b1c8478a1 Bug 1243846 - Implement Intersection Observer API. r=mrbkap, r=mstange 2016-10-28 10:24:00 -04:00