Commit Graph

104 Commits

Author SHA1 Message Date
Randall Barker
c955f482b1 Bug 1335895 - Android GeckoView Dynamic Toolbar Version 3 r=botond,dvander,jchen,kats
This version of the Dynamic Toolbar moves the animation of the toolbar
from the Android UI thread to the compositor thread. All animation for
showing and hiding the toolbar are done with the compositor and a static
snapshot of the real toolbar.

MozReview-Commit-ID: BCe8zpbkWQt
2017-04-20 15:15:14 -07:00
peter chang
dc497a1152 Bug 1337889 - use CompositorAnimationsId to query Opacity/Transform animation, r=hiro,kats
MozReview-Commit-ID: 3s1kzOQAfrd
2017-02-09 17:30:11 -05:00
Kartikaya Gupta
cd1c5dc857 Bug 1339220 - Add telemetry probes to measure duration and max-area of animations in the compositor. r=botond,bsmedberg
MozReview-Commit-ID: KyvsNSTcxG8
2017-02-16 14:40:37 -05:00
Bas Schouten
cd0155b68f Bug 1317843 - Split LayerManagerComposite into two classes. r=jrmuizel 2016-11-24 18:11:27 +13:00
Kartikaya Gupta
88d479e33e Bug 1311030 - Remove more code unused since the deletion of JPZ. r=snorp
MozReview-Commit-ID: 1p8aWShTrQf
2016-10-18 12:34:25 -04:00
Botond Ballo
5e1641d688 Bug 1288210 - Don't use ForEachNode in AlignFixedAndStickyLayers. r=mstange
It would make the next change awkard.

This also temporarily removes the current, incomplete, handling of an
unconsumed translation, but this will be added back (and made complete)
in the next commit.

MozReview-Commit-ID: 2tPOjEMRKfj
2016-09-23 19:32:09 -04:00
Botond Ballo
f148baf4c0 Bug 1288210 - Update the comment above AlignFixedAndStickyLayers(). r=mstange
MozReview-Commit-ID: ri9bJZLHYB
2016-09-26 16:28:24 -04:00
Randall Barker
bac11cde77 Bug 1291373 - [geckoview] part 3, Remove MOZ_ANDROID_APZ r=botond,snorp 2016-08-16 14:33:43 -07:00
David Anderson
67d2c40688 Send vsync rates to the compositor to avoid querying gfxPlatform. (bug 1288822, r=mchang) 2016-07-26 01:57:11 -07:00
Hiroyuki Ikezoe
ba2595fb00 Bug 1208411 - Delay vsync timestamps on the compositor to make async animations more sync. r=mchang,mstange
MozReview-Commit-ID: Aes0jyOnojn
2016-06-23 06:24:39 +09:00
Botond Ballo
cc530c3c37 Bug 1267438 - Minor cleanup to AsyncCompositionManager. r=kats
MozReview-Commit-ID: 8DlQzhsjUOO
2016-05-11 19:39:37 -04:00
Kevin Wern
4d07bc92ea Bug 1227231: Use generic tree traversal algorithms for loops over Layer trees. r=botond
Create an Iterator type with classes ForwardIterator and ReverseIterator,
having GetFirstChild/GetNextSibling and GetLastChild/GetPrevSibling
methods, respectively. Specify the iterator type for each call to
ForEachNode. With this, we can support trees with forward and reverse
sibling structures.

Additionally, apply these algorithms to all Layer recursive traversals,
where applicable. Update tests to ensure both directions yield expected
results.

MozReview-Commit-ID: iYpX22XHTa
2016-03-10 01:20:40 -08:00
Botond Ballo
cb8a8e5b3d Bug 1267438 - Remove the redundant aTransformAffectsLayerClip argument to AlignFixedAndStickyLayers. r=mstange
MozReview-Commit-ID: AjHA70EdCeX
2016-05-04 20:20:57 -04:00
Botond Ballo
c830b3a985 Bug 1267438 - During AlignFixedAndStickyLayers, only un-adjust the fixed portion of a layer's clip rect. r=mstange
MozReview-Commit-ID: 62JVHL5AVhP
2016-05-11 15:16:57 -04:00
David Anderson
7b7cd394cc Rename PCompositor to PCompositorBridge. (bug 1258479 part 2, r=mattwoodrow) 2016-03-22 14:08:38 -04:00
Botond Ballo
3aeef5636b Bug 1236750 - Use strongly-typed matrices to represent layer transforms in APZ code. r=kats 2016-01-04 20:07:54 -05:00
Botond Ballo
1c4faed6a9 Bug 1236750 - Rename ViewTransform to AsyncTransform. r=kats
It's only used to represent async transforms, and making this clear
allows us to replace (in a subsequent change) its conversion operator
to Matrix4x4 with a conversion operator to a specific typed matrix.
2015-12-30 18:24:26 -05:00
Botond Ballo
53231fb2d4 Bug 1147673 - Determine more accurately whether an async transform affects a layer's clip rect. r=kats 2015-10-02 18:35:21 -04:00
Carsten "Tomcat" Book
68619d81cc Backed out changeset 9e1f2694536c (bug 1147673) 2015-12-16 11:52:41 +01:00
Botond Ballo
db84eb8582 Bug 1147673 - Determine more accurately whether an async transform affects a layer's clip rect. r=kats 2015-10-02 18:35:21 -04:00
Botond Ballo
bfb180e3d4 Bug 1168263 - Propagate the scroll-clip of a descendant of a layer with a perspective transform up to the layer itself. r=kats,mstange 2015-11-18 14:21:37 -05:00
Kartikaya Gupta
97e8080aed Bug 1223928 - Make the horizontal scrollbar on the root scrollable shift correctly with the dynamic toolbar. r=botond 2015-11-19 09:55:21 -05:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Nathan Froyd
bf7f6dda03 Bug 1207245 - part 3 - switch all uses of mozilla::RefPtr<T> to nsRefPtr<T>; r=ehsan
This commit was generated using the following script, executed at the
top level of a typical source code checkout.

 # Don't modify select files in mfbt/ because it's not worth trying to
 # tease out the dependencies currently.
 #
 # Don't modify anything in media/gmp-clearkey/0.1/ because those files
 # use their own RefPtr, defined in their own RefCounted.h.
find . -name '*.cpp' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    grep -v 'mfbt/RefPtr.h' | \
    grep -v 'mfbt/nsRefPtr.h' | \
    grep -v 'mfbt/RefCounted.h' | \
    grep -v 'media/gmp-clearkey/0.1/' | \
    xargs perl -p -i -e '
 s/mozilla::RefPtr/nsRefPtr/g; # handle declarations in headers
 s/\bRefPtr</nsRefPtr</g; # handle local variables in functions
 s#mozilla/RefPtr.h#mozilla/nsRefPtr.h#; # handle #includes
 s#mfbt/RefPtr.h#mfbt/nsRefPtr.h#;       # handle strange #includes
'

 # |using mozilla::RefPtr;| is OK; |using nsRefPtr;| is invalid syntax.
find . -name '*.cpp' -o -name '*.mm' | xargs sed -i -e '/using nsRefPtr/d'

 # RefPtr.h used |byRef| for dealing with COM-style outparams.
 # nsRefPtr.h uses |getter_AddRefs|.
 # Fixup that mismatch.
find . -name '*.cpp' -o -name '*.h'| \
    xargs perl -p -i -e 's/byRef/getter_AddRefs/g'
2015-10-18 00:40:10 -04:00
Jim Mathies
e7f31f008a Bug 1137944 - Move plugin window metrics updates to a point during comososition where we know the remote layer tree is hooked up to the chrome layer tree. r=matt.woodrow 2015-10-06 14:23:24 -05:00
Jim Mathies
da50b850c2 Bug 1196539 - Apply plugin config using AutoResolveRefLayers during composition. r=matt.woodrow 2015-10-06 14:23:24 -05:00
Kartikaya Gupta
fadc132229 Bug 1201581 - Hook up the syncFrameMetrics call to sync metrics info from the compositor to Java-land on each composite. r=rbarker 2015-09-11 21:58:16 -04:00
Kartikaya Gupta
525477b308 Bug 1201529 - Fall back to rootmost metrics if there is no root content document metrics. r=botond 2015-09-11 21:58:15 -04:00
William Chen
ecf84fcf22 Bug 1131470 - Part 1: Rename existing use of ScreenOrientation to ScreenOrientationInternal. r=baku 2015-08-18 14:55:09 -07:00
Kartikaya Gupta
f5ed3a019f Bug 1180295 - Implement seamless snapping to the stable state. r=rbarker 2015-08-18 14:27:20 -04:00
Kartikaya Gupta
3766fb3084 Bug 1180295 - Stop clipping the content while the toolbar is in the process of sliding off. r=rbarker 2015-08-18 14:27:19 -04:00
Kartikaya Gupta
f8cac5f8c4 Bug 1180295 - Rip out the Fennec code to set the screen render offset. r=rbarker 2015-08-18 14:27:18 -04:00
Bobby Holley
710865df63 Bug 1188696 - Hoist nsRefPtr.h into MFBT. r=froydnj 2015-07-29 10:44:59 -07:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Mason Chang
0f9745b97a Bug 1077651 Measure frame uniformity by synthesizing native events. r=kats,mrbkap 2015-06-08 09:53:41 -07:00
Timothy Nikkel
3a8b15b000 Bug 1157066. When reading back the OMTA transfrom of a layer don't include transforms from async panning or zooming. r=kats,birtles
Containerless scrolling means that the pan zoom controller applies it's transforms (to compensate for differences between the state of layout the last time we painted and the current state as composited to the screen) to the layers that are scrolled instead of the container layer that contains the layers that scroll.

When running test_animations_omta.html there is a zoom of 1.306122 applied, and the page is scrolled down to 67 screen pixels (before the test starts, not sure why exactly). Gecko scrolls as close to 67 screen pixels as it can: 67/1.306122 = 51.29689 css pixels, which is 3077.813 appunits. Gecko scrolls to 3078 app units. When AsyncCompositionManager::TransformScrollableLayer runs we calculate the scroll position of gecko and the current scroll position that the pan zoom controller is using. Since there are no async pan or zoom operations taking place these should match. However when the gecko scroll position is calculated we get 3078/60*1.306122 = 67.0040586. So it applies a transform of 0.0040586 to the container layer for the transform that test_animations_omta.html is animating off main thread. When test_animations_omta.html reads the transform of this layer it fails because it's expecting 0 and 0.0040586 is outside of it's epsilon for considering it to be close enough.
2015-04-24 19:05:52 -05:00
Wes Kocher
d068b7e113 Backed out changeset 517b9b831685 (bug 1157066) for build bustage 2015-04-24 14:56:55 -07:00
Timothy Nikkel
29c16525f7 Bug 1157066. When reading back the OMTA transfrom of a layer don't include transforms from async panning or zooming. r=kats,birtles
Containerless scrolling means that the pan zoom controller applies it's transforms (to compensate for differences between the state of layout the last time we painted and the current state as composited to the screen) to the layers that are scrolled instead of the container layer that contains the layers that scroll.

When running test_animations_omta.html there is a zoom of 1.306122 applied, and the page is scrolled down to 67 screen pixels (before the test starts, not sure why exactly). Gecko scrolls as close to 67 screen pixels as it can: 67/1.306122 = 51.29689 css pixels, which is 3077.813 appunits. Gecko scrolls to 3078 app units. When AsyncCompositionManager::TransformScrollableLayer runs we calculate the scroll position of gecko and the current scroll position that the pan zoom controller is using. Since there are no async pan or zoom operations taking place these should match. However when the gecko scroll position is calculated we get 3078/60*1.306122 = 67.0040586. So it applies a transform of 0.0040586 to the container layer for the transform that test_animations_omta.html is animating off main thread. When test_animations_omta.html reads the transform of this layer it fails because it's expecting 0 and 0.0040586 is outside of it's epsilon for considering it to be close enough.
2015-04-24 16:41:56 -05:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Jeff Muizelaar
6cbfabbc4c Bug 1141864. Replace a bunch nsAutoPtr.h includes with nsRefPtr.h 2015-03-10 20:48:09 -04:00
Kartikaya Gupta
e91004034f Bug 1078275 - Ensure the first transaction received in the compositor is treated as a first-paint. r=mstange 2015-02-06 15:16:53 -05:00
Ehsan Akhgari
a7f747ec15 Bug 1118486 - Part 1: Use = delete instead of MOZ_DELETE directly; r=Waldo
Most of this patch (with the exception of dom/bindings/Codegen.py) was
generated by the following bash script:

#!/bin/bash

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "*/.git*" \
       ! -wholename "obj-*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_DELETE '= delete'
2015-01-08 23:19:05 -05:00
Botond Ballo
8e10bf2d87 Bug 1055741 - Unify the 'local Screen' and 'ParentLayer' coordinate systems. r=kats 2014-11-10 14:35:11 -05:00
Carsten "Tomcat" Book
52d5b03991 Backed out changeset a96930f1e26b (bug 1055741) 2014-11-13 11:47:31 +01:00
Botond Ballo
031c8b1c39 Bug 1055741 - Unify the 'local Screen' and 'ParentLayer' coordinate systems. r=kats 2014-11-10 14:35:11 -05:00
Jonathan Watt
fa5188c412 Bug 1077961, part 2 - Stop doing lots of unnecessary and expensive Matrix4x4 multiplication. r=Bas 2014-10-08 04:43:00 +01:00
Jeff Muizelaar
4f3610dd6b Bug 1064479. Redo how screen rotation is implemented on B2G/Layers. r=nical,mwoodrow
Currently we use a world transform on the LayerManager. This gets passed to the
screen render target which adjusts the gl transform to accomplish the rotation.
This causes a lot of the system to have to know about the transform.

Instead we can just bake the transform into the root layer's shadow transform.
Everything now mostly just works.
2014-09-10 15:59:00 -04:00
Jeff Muizelaar
7e82b47fd1 Bug 1049564. Backout unintentionally landed code.
CLOSED TREE
2014-09-08 11:07:48 -04:00
Jeff Muizelaar
e9003d6610 Bug 1049564. Remove sketchy sizing code from CompositorOGL. r=nical
This came from the layers refactoring and taking it out doesn't
seem to cause any test failures.
2014-09-08 10:54:26 -04:00
Kartikaya Gupta
a8c25c63cf Bug 1055760 - Update AsyncCompositionManager's fixed- and sticky-layer-adjusting code to deal with multiple FrameMetrics. r=botond 2014-08-27 22:13:42 -04:00