Commit Graph

282 Commits

Author SHA1 Message Date
Matt Woodrow
2c7a419306 Bug 1168263 - Simplify GetResultingTransformMatrix calculations to avoid unnecessary origin changes. r=roc 2015-11-26 22:32:35 +13:00
Botond Ballo
e26ba97449 Bug 1168263 - Annotate layers with a perspective transform. r=mattwoodrow 2015-11-02 17:38:08 -05:00
Nicolas Silva
a39076fa32 Bug 1219529 - Don't attempt to deallocate shmems after the ipdl protocol is shut down. r=sotaro 2015-11-18 16:59:06 +01:00
Botond Ballo
50060672be Bug 1224021 - Support fractional async scroll offsets in the reftest harness. r=tn 2015-11-11 19:10:23 -05:00
Kartikaya Gupta
0e1f47f4ed Bug 1214267 - Send the side to which fixed-pos items are attached so that we can move them in the compositor more correctly when the viewport size is changing. r=mattwoodrow 2015-11-11 10:07:29 -05:00
Birunthan Mohanathas
ac37dec517 Bug 1219392 - Capitalize mozilla::unused to avoid conflicts. r=froydnj 2015-11-02 07:53:26 +02:00
Markus Stange
0ea07d8a44 Bug 1216248 - Recomposite when the window overlay changes. r=mattwoodrow 2015-10-30 11:49:07 +01:00
David Anderson
443cc623b2 Compute the compositor's damage region before composites, rather than layers updates. (bug 1217560, r=mattwoodrow) 2015-10-27 10:15:02 -07: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
Nathan Froyd
a38cb8ff82 Bug 1212027 - part 7 - modify IPDL codegen to store sub-protocols in a hashtable rather than an array; r=jld,nical,cpearce,billm 2015-10-07 14:30:33 -04:00
David Anderson
8a17c8a7ad Remove ISurfaceAllocator::GetCompositorBackend. (bug 1211109 part 4, r=mattwoodrow) 2015-10-05 23:40:13 -07:00
David Anderson
89329365b2 Remove the static compositor backend variable. (bug 1211109 part 2, r=mattwoodrow) 2015-10-05 23:39:00 -07:00
Botond Ballo
e4d1f66bd9 Bug 1166301 - Store a flag on Layer to tell fixed background layers apart from fixed position layers. r=mattwoodrow 2015-09-04 17:26:33 -04: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
d6bfe53b6e Bug 1180295 - Rip out call to setContentDocumentFixedPositionMargins. r=rbarker 2015-08-18 14:27:18 -04:00
Markus Stange
e2449accad Bug 1187804 - Annotate fixed-position layers with the scroll id of the scroll frame that they are fixed with respect to. r=mattwoodrow 2015-08-17 19:44:42 -04:00
CJ Ku
c1c30c1099 Bug 1061393 - Export display list info to layer scope viewer. r=kamidphish 2015-08-03 02:11:00 -04:00
Sotaro Ikeda
e9cab90cd6 Bug 1186968 - Fix Compositor::SetScreenRotation() call r=nical 2015-07-24 07:13:59 -07:00
Botond Ballo
d61e3f0a5b Bug 1181832 - Keep gfxPrefs.h out of header files. r=kats 2015-07-13 11:53:10 -04: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
Robert O'Callahan
1bebcba55f Bug 1143575. Route ImageCompositeNotifications to ImageContainers. r=nical
For frame statistics to work properly, we have to notify an ImageContainer
when it has been composited. This requires a few changes, which have
been lumped together in this patch:
-- Create PImageContainer and ImageContainerParent/ImageContainerChild.
-- Add mFrameID and mProducerID everywhere we're passing around images.
-- Route composition notifications from the compositor back to
ImageContainerChild.
2015-07-06 15:02:26 +12:00
Robert O'Callahan
9f4cb7cc5b Bug 1143575. Store composition time in Compositor. r=nical
We'll need this later so ImageHost can select the correct image to use.

Adding a TimeStamp parameter to BeginFrame is a bit annoying since BeginFrame
is overridden by every subclass. It's a bit more convenient to just call a
separate non-virtual method just before we call BeginFrame.
2015-07-07 15:38:38 +12:00
David Anderson
2511c6ca59 Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow 2015-06-21 12:27:31 -04:00
Markus Stange
3000f6c8eb Back out bug 1148582 for static analysis bustage. 2015-07-01 01:20:59 -04:00
David Anderson
38a60e1411 Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow 2015-06-21 12:27:31 -04:00
Kartikaya Gupta
ece9249dab Bug 1163832 - Add an API to flush pending APZ repaint requests and dispatch a notification upon completion. r=botond 2015-06-19 08:25:41 -04:00
Timothy Nikkel
21804e7053 Bug 1160642. Add reftest-async-zoom to apply an async zoom before taking snapshot. r=dbaron 2015-05-24 16:48:26 -04:00
Kartikaya Gupta
5d4dd39302 Back out 2 csets for bug 1163832 for emulator crashtest failures. r=me
CLOSED TREE
2015-05-22 07:51:55 -04:00
Kartikaya Gupta
70e917728e Bug 1163832 - Add an API to flush pending APZ repaint requests and dispatch a notification upon completion. r=botond 2015-05-22 06:42:08 -04:00
Eric Rahm
24f5eb45e4 Bug 1162748 - Remove instances of #ifdef PR_LOGGING in graphics. r=froydnj
PR_LOGGING is now always defined, we can remove #ifdefs checking for it.
2015-05-08 14:37:01 -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
L. David Baron
99cf80cc3c Bug 1156456 patch 3 - Send transform origin and perspective origin to layer in device pixels rather than CSS pixels. r=birtles 2015-04-22 19:37:04 -07:00
Ethan Lin
0c6659aed6 Bug 1146214 - Rename some functions after refactoring. r=nical 2015-04-10 02:21:00 +02:00
Ethan Lin
cd0b6b66bd Bug 1146214 - Remove the unused code after refactoring. r=nical 2015-04-10 02:20:00 +02:00
Ethan Lin
a4b8f3e340 Bug 1146214 - Implement fence delivery. Combine ipc messages and remove reply fence delivery message. r=nical 2015-04-10 02:19:00 +02:00
David Anderson
10d2eaa0f9 Fix APZ target confirmations arriving before dependent layer transactions. (bug 1154130, r=kats) 2015-04-14 12:24:32 -04:00
Ying-Ruei Liang (KK)
2c219b4aaf Bug 1143522 - Convert Layer::mClipRect to ParentLayerIntRect. r=botond
Change interface of getter/setter for mClipRect,
also necessary modification for codes that use these resources.

* * *
Bundle mUseClipRect and mClipRect as Maybe<ParentLayerIntRect> mClipRect
2015-04-11 22:03:00 -04:00
David Anderson
5ae9e8b290 Scrollbar thumbs can overlap scrollbar arrows during APZ scrolling. (bug 1152469, r=botond,mstange) 2015-04-12 23:03:02 -04:00
Bob Owen
ab88ebd3af Bug 1149971 Part 2: Cet rid of kCurrentProcessId as it makes lots of static initializers. r=dvander 2015-04-01 13:59:20 +01:00
Bob Owen
7517f0b07d Bug 1119878 Part 2: Change IPC code to hold ProcessID instead of ProcessHandle. r=billm, r=dvander, r=aklotz, r=cpearce 2015-04-01 09:40:35 +01:00
Bill McCloskey
6412f793f2 Bug 1121072 - Always notify when layers cleared (r=dvander) 2015-03-27 08:38:47 -07:00
Brian Birtles
a6a6f3ca41 Bug 1113425 part 2 - Apply async properties when querying the animated transform; r=mattwoodrow
In order to test off-main thread animations, we have a method that will return
the animated transform value set on a shadow layer. This method will return null
if the transform was not set by animation.

However, in some situations we temporarily clear the animation transform. For
example, when we synchronize a composite layer with its content layer, we reset
the animation transform. Then, on the next composite, we will recalculate the
animated value.

If we try to query the animated transform value in between resetting it and the
next composite we will get back null. To avoid a race condition, in
ShadowLayersUpdated after potentially clearing the animated transform, we
synchronously update the async properties on the layer transform in order
to reinstate the animated transform (so it is there when we go to query it).
However we *only* do this when the mIsTesting flag is set which is true
whenever we have the refresh driver under test control.  Furthermore, we only
do it when we already have a pending composite task to better match conditions
under regular operation.

In test_deferred_start.html, however, we specifically need to test without
putting the refresh driver under test control. As a result mIsTesting will be
false and we can encounter a race condition when querying the animated
transform.

To work around this, this patch makes us *also* update async properties
when fetching the animated transform value. The method for getting the
animated transform value is only used for testing so it should have no effect
on the regular compositing behavior.

It would seem that we could then remove the call from ShadowLayersUpdated but
doing this caused a small number of test cases to fail. In particular one test
for *opacity* in test_animations_omta.html was failing at the end of the
animation because we ended up with a stale opacity animation value on the
compositor which the synchronous update was previously removing. The test,
in this case, should be ignoring the value on the compositor but, unlike
transform, there is no flag for indicating whether or not the opacity on shadow
layers has been set by animations. As a result, this patch leaves the call that
triggers a synchronous update in test mode when updating shadow layers.
2015-03-17 18:38:12 +09:00
Sotaro Ikeda
a6782ac1fa Bug 1139935 - Re-enable RemoveTextureFromCompositableTracker r=nical 2015-03-11 06:53:43 -07:00
Bill McCloskey
159303a63d Bug 1129223 - Introduce new, more efficient mozLayerTreeReady event (r=BenWa) 2015-03-05 22:03:23 -08:00
Sotaro Ikeda
049a7c60ad Bug 1136352 - Fix RemoveTextureAsync handling r=nical 2015-03-02 13:38:45 -08:00
Kartikaya Gupta
5331311d19 Bug 1131840 - Propagate the EventRegionsOverride flag on RefLayers also. r=roc 2015-02-16 21:30:02 -05:00
Kartikaya Gupta
78e10f689b Bug 1131840 - Replace the shouldForceDispatchToContent flag with a bitset enum. r=roc,botond 2015-02-16 21:30:02 -05:00