Commit Graph

2630 Commits

Author SHA1 Message Date
Ryan VanderMeulen
f4a0d77ffc Merge inbound to m-c. a=merge 2017-03-29 09:41:54 -04:00
Timothy Nikkel
7bf131a182 Bug 1351434. Don't do any work in RasterImage::OnSurfaceDiscarded because we hold the surface cache mutex in it. r=aosmond
https://hg.mozilla.org/integration/mozilla-inbound/rev/432215553953 (bug 1343341) is what caused this.

The UpdateState call does a surface cache lookup.
2017-03-28 15:46:23 -05:00
Makoto Kato
f3c1c49239 Bug 1348177 - Part 1. Remove GetProcAddress for shell32 to use Vista+ API (image part). r=jimm,tnikkel
Since we drop XP support, it is unnecessary to use SHGetStockIconInfo via LoadLibrary.

MozReview-Commit-ID: 4lvhVObHv5U

--HG--
extra : rebase_source : 04ac6f97e6a3eff7c52e11e3868da0939efd6ffe
2017-03-17 13:26:57 +09:00
Timothy Nikkel
e4da61a3e1 Bug 1343341. Add a test to check that discarding and redecoding of animated images works. r=aosmond
The test does nothing if the animated images discarding pref isn't enabled.

--HG--
rename : image/test/crashtests/1249576-1.png => image/test/mochitest/infinite-apng.png
2017-03-27 00:17:54 -05:00
Timothy Nikkel
e4990d2f23 Bug 1343341. When the animated images discarding pref is enabled Remove the lifetime lock on animated images and adjust code in RasterImage to allow animated images to be discarded. r=aosmond
Mostly asserts and simple book keeping. The complicated things were in FrameAnimator.
2017-03-27 00:17:52 -05:00
Timothy Nikkel
1614a73bad Bug 1343341. Rewrite animation state updating to derive new state purely based on SurfaceCache and RasterImage::mAnimationFinished. r=aosmond
If the SurfaceCache discards our frames on another thread, the runnable that notifies us of that discard could race with a decode complete notification. So we can't rely on any ordering of SetDiscarded and NotifyDecodeComplete. Thus we must derive our state purely from the SurfaceCache (and mAnimationFinished from RasterImage).

We also update the image state in RequestRefresh (the main place where we use the state that is updated).

The other main place we use the state is GetCompositedFrame, but we don't update the state there. It should be fine because the only time this might lag behind reality is if the frames are discarded, and it should be fine to continue drawing the composited frame until the discard notification arrives.

The way that we tell that an animated image has all of its frames complete in the surface cache is less than ideal.
2017-03-26 00:04:53 -05:00
Phil Ringnalda
3486d4cb15 Merge m-i to m-c, a=merge 2017-03-25 18:39:56 -07:00
Timothy Nikkel
63ad0ad7f3 Bug 1343341. Only call AnimationState::SetDiscarded on the main thread. r=aosmond
Image::OnSurfaceDiscarded can be called on any thread. But AnimationState is a main thread only object.
2017-03-25 02:16:21 -05:00
Timothy Nikkel
2776a4ad96 Bug 1343341. In FrameAnimator look up our frames once and pass them around. r=aosmond
The SurfaceCache can discard on any thread at any time. So we could be in the middle of advancing frames of a fully decoded animated image and then the frames could disappear out from under us.

Making the code deal with that kind of a situation would make the logic very complicated. So instead just look up the frames once and pass them around, that way they never change during while we are advancing the frame.
2017-03-24 00:57:30 -05:00
Manish Goregaokar
88b43cc612 Bug 1341102 - Update stylo reftest expectations; r=orange
MozReview-Commit-ID: 9PbpzNqSQ7W
2017-03-24 21:54:18 -07:00
Carsten "Tomcat" Book
332688962a Merge mozilla-central to mozilla-inbound
--HG--
rename : testing/web-platform/tests/storage/interfaces.html => testing/web-platform/tests/storage/interfaces.https.html
2017-03-23 13:57:16 +01:00
Carsten "Tomcat" Book
492970c342 merge mozilla-inbound to mozilla-central a=merge 2017-03-23 13:44:09 +01:00
Carsten "Tomcat" Book
9b6d088496 merge autoland to mozilla-central a=merge
--HG--
rename : browser/components/preferences/in-content/tests/browser_advanced_siteData.js => browser/components/preferences/in-content-old/tests/browser_advanced_siteData.js
rename : dom/media/mediasink/DecodedAudioDataSink.cpp => dom/media/mediasink/AudioSink.cpp
2017-03-23 13:42:40 +01:00
Andrew Osmond
c21c5cb4c8 Backed out changeset 619b5b27ce87 (bug 1343499) for CLOSED TREE build bustage r=backout 2017-03-22 11:04:30 -04:00
Andrew Osmond
a60b290b56 Bug 1343499 - Expose native image sizes to imagelib users. r=tnikkel 2017-03-22 09:05:36 -04:00
Andrew Osmond
9f71f348c1 Backed out changeset 0b797601dc36 (bug 1343499) for build bustages. r=backout 2017-03-22 09:19:05 -04:00
Andrew Osmond
cbf46adaef Bug 1343499 - Expose native image sizes to imagelib users. r=tnikkel 2017-03-22 09:05:36 -04:00
Andrea Marchesini
1fd1bc3935 Bug 1343933 - Renaming Principal classes - part 2 - NullPrincipal, r=qdot
--HG--
rename : caps/nsNullPrincipal.cpp => caps/NullPrincipal.cpp
rename : caps/nsNullPrincipal.h => caps/NullPrincipal.h
rename : caps/nsNullPrincipalURI.cpp => caps/NullPrincipalURI.cpp
rename : caps/nsNullPrincipalURI.h => caps/NullPrincipalURI.h
2017-03-22 11:38:40 +01:00
Andrew Osmond
449b1552c1 Bug 1343499 - Expose native image sizes to imagelib users. r=tnikkel 2017-03-22 09:05:36 -04:00
Timothy Nikkel
3d98a47ed8 Bug 1343341. Change GetTimeoutForFrame to return a Maybe, and make all callers deal with a lack of a return value. r=aosmond
Do this to allow GetTimeoutForFrame to be called for frames that haven't been decoded yet. Propagate a Maybe result where it makes sense. The remaining callers just bail if they get no return value. Many of them can just assert that they get a return value because they already got the same frame, so the timeout has to be available.

The logic is a little tricky because we have "Forever" timeouts that were sort of treated as error cases.
2017-03-23 00:02:54 -05:00
Timothy Nikkel
f088324ed2 Bug 1347302. Add animated image specific probes for several imagelib telemetry probes. r=aosmond f=bsmedberg 2017-03-23 00:02:54 -05:00
Wes Kocher
3c092e1002 Merge m-c to inbound, a=merge
MozReview-Commit-ID: GjXiiENYBmx
2017-03-21 16:20:08 -07:00
Eric Rahm
7d3e1c4c68 Bug 943686 - Add RasterImage.cpp to unified sources. r=tn
MozReview-Commit-ID: cRFkjJi4dP
2017-03-21 11:09:17 -07:00
Eric Rahm
de862a07cc Bug 943686 - Add ProgressTracker.cpp to unified sources. r=tn
MozReview-Commit-ID: Ipo4Tb1bnHG
2017-03-21 11:09:16 -07:00
Eric Rahm
a7ec07a00d Bug 943686 - Add imgRequestProxy.cpp to unified sources. r=tn
MozReview-Commit-ID: ITT9T22WyYG
2017-03-21 11:09:15 -07:00
Eric Rahm
2f16bd241c Bug 943686 - Add imgRequest.cpp to unified sources. r=tn
MozReview-Commit-ID: B87v26HNtBn
2017-03-21 11:09:14 -07:00
Eric Rahm
0e5acb78bf Bug 943686 - Add imageLoader.cpp to unified sources. r=tn
MozReview-Commit-ID: G9sFOtbFYjP
2017-03-21 11:09:13 -07:00
Sebastian Hengst
1e30641e50 Backed out changeset 8c34803d1392 (bug 943686) for Windows bustage. r=backout 2017-03-20 23:00:43 +01:00
Sebastian Hengst
3d552e75e6 Backed out changeset 726f50ce3a40 (bug 943686) 2017-03-20 23:00:06 +01:00
Sebastian Hengst
c3ffd943f4 Backed out changeset 46d1aeb34ad2 (bug 943686) 2017-03-20 22:59:58 +01:00
Sebastian Hengst
d0cb7ddce9 Backed out changeset 2828bb6eabef (bug 943686) 2017-03-20 22:59:50 +01:00
Sebastian Hengst
469aa374a9 Backed out changeset 538a6a953f5d (bug 943686) 2017-03-20 22:59:41 +01:00
Eric Rahm
56cf706a4f Bug 943686 - Add RasterImage.cpp to unified sources. r=tn
MozReview-Commit-ID: cRFkjJi4dP
2017-03-20 14:28:44 -07:00
Eric Rahm
e91f0e2104 Bug 943686 - Add ProgressTracker.cpp to unified sources. r=tn
MozReview-Commit-ID: Ipo4Tb1bnHG
2017-03-20 14:28:43 -07:00
Eric Rahm
3d92dbeb7c Bug 943686 - Add imgRequestProxy.cpp to unified sources. r=tn
MozReview-Commit-ID: ITT9T22WyYG
2017-03-20 14:28:42 -07:00
Eric Rahm
bbf39fe24c Bug 943686 - Add imgRequest.cpp to unified sources. r=tn
MozReview-Commit-ID: B87v26HNtBn
2017-03-20 14:28:41 -07:00
Eric Rahm
e9c6b8a437 Bug 943686 - Add imageLoader.cpp to unified sources. r=tn
MozReview-Commit-ID: G9sFOtbFYjP
2017-03-20 14:28:40 -07:00
Andrew Osmond
8d948fcc67 Bug 1074192 - Hold the mutex in imgFrame when creating a DrawableFrameRef. r=tnikkel 2017-03-15 08:08:47 -04:00
Markus Stange
730b4fc829 Bug 1339897 - Rename PROFILER_LABEL_PRINTF to PROFILER_LABEL_DYNAMIC and make it really cheap. r=Ehsan,njn
Instead of copying and concatenating strings into an mDest buffer in
SamplerStackFramePrintfRAII, require callers to keep the string buffer alive
for the duration of the current scope, and store the pointer to the annotation
string in the ProfileEntry. During stackwalking, concatenate the label and the
annotation (separated by a space) and store the resulting string in the
profile buffer.

MozReview-Commit-ID: GEjcLrhhdvb

--HG--
extra : rebase_source : 683749421ee2122805a249cf413e882ee5f33331
2017-03-22 19:37:33 -04:00
Shing Lyu
dd757845af Bug 1349130 - Fixed wrong reference files in reftest-stylo.list r=heycam
MozReview-Commit-ID: LRcPOPzVWFK

--HG--
extra : rebase_source : bb1fcb460c8e60aef420352f94d03046cf5bbe0c
2017-03-21 16:01:50 +08:00
Ehsan Akhgari
f4a03626ab Bug 1347400 - Add telemetry for imgLoader::LoadImage(); r=mystor,francois 2017-03-17 21:19:21 -04:00
Timothy Nikkel
e9cd32eecd Bug 1343341. Fix a bug with redecoding images whose animation is finished. r=aosmond
For animated images with finite animations we can finish running their animation. At which point we won't call RequestRefresh, and so we will never mark the composited frame as valid (since that is the only place we do that).

To fix this we mark the composited frame as valid when we finish decoding.

But we can do better than that, we can mark the composited frame as valid immediately when we create a new decoded since we are just drawing the final frame from now on.
2017-03-17 00:41:44 -05:00
Carsten "Tomcat" Book
023d5aecd1 Merge mozilla-central to mozilla-inbound 2017-03-16 15:39:58 +01:00
Timothy Nikkel
23f3425afe Bug 1343341. Only set the animation state as discarded if we discarded the animated frames (and not a static frame from a first-frame-only decode). r=aosmond
The SurfaceCache can hold the first frame of a "static" decode as well as the animated frames in two seperate entries. We only care about what happens to the animated frames, so ignore OnSurfaceDiscarded for anything else.

To accomplish this we must pass the SurfaceKey to OnSurfaceDiscarded.
2017-03-16 03:06:06 -05:00
Timothy Nikkel
d69ec52e66 Bug 1343341. Create state on the AnimationState object to track whether the image is decoded or not. r=aosmond
We end up needing to track a few different things.

The large comment in the patch explains.
2017-03-16 03:06:04 -05:00
Andrew Osmond
d93e9c00e1 Bug 1298652 - Allow 64k width/height images to be rendered. r=jrmuizel
MozReview-Commit-ID: DIK9y9acV0M

--HG--
extra : rebase_source : 55129089afacd7a4a932a1ada59d366db54ea33a
2016-09-01 07:32:02 -04:00
Timothy Nikkel
39e0784bbd Bug 1346510. Don't allow the surface cache to unlock the animated frames of an animated image (when discarding of animated images is disabled). r=aosmond
The pref has never been enabled, so this is quite surprising!

It is currently possible (and has been for quite a while) to discard animated images. All we need is the follow sequence of events.

1. Decode an animated image.
2. Move the animated image out of view (so it is not painted).
3. Call canvas.drawImage on the animated image (or anything else that asks for a first frame only decode). This creates a static entry in the surface cache for this first frame in addition to the animated entry. Because it is a static request we will also start a first frame decode. RasterImage::Decode calls SurfaceCache::UnlockEntries

https://dxr.mozilla.org/mozilla-central/rev/4ceb9062ea8f4113bfd1b3536ace4a840a72faa7/image/RasterImage.cpp#1166

and bam, the animated frames are now unlocked (even though the RasterImage, and it's entry in the surface cache is still locked).
4. Switch tabs, open about:memory and minimize memory to actual throw away the animated frames.
5. Switch back to the image tab, scroll the image back into view, it will not animate, it will just show the last composited frame forever.
2017-03-14 01:11:44 -05:00
Carsten "Tomcat" Book
c1edc7067d merge mozilla-inbound to mozilla-central a=merge 2017-03-13 15:22:26 +01:00
Jonathan Watt
fd1c7c2bfb Bug 1345675 - Some cleanup and optimization of VectorImage::Draw. r=dholbert 2017-02-06 11:21:49 +00:00
Jonathan Watt
94608339b3 Bug 1058040, part 12 - Make SVGImageContext's ctor's aViewportSize parameter optional. r=dholbert 2017-01-30 13:25:00 +00:00