Commit Graph

228 Commits

Author SHA1 Message Date
Andrew Osmond
b03319232c Bug 1258741 - Part 2. Ensure we consistently render partially decoded images. r=tnikkel 2016-09-26 14:18:37 -04:00
Andrew Osmond
f4dafe1aa1 Bug 1258741 - Part 1. Remove dead/unused image decoder aborted flag. r=tnikkel 2016-09-21 07:13:08 -04:00
Phil Ringnalda
1a29dfb4ca Backed out changeset c0021d576b3a (bug 1120279) for multiple reftest failures 2016-09-17 09:54:25 -07:00
Andrew Osmond
a2b89af1ce Bug 1120279 - Ensure the animated image state is consistent if redecoding fails or is asynchronous. r=edwin 2016-09-15 15:13:48 -04:00
Timothy Nikkel
1491cc0380 Bug 1260324. Don't draw garbage to the screen if an image doesn't happen to be decoded. r=seth
Layout has been using imgIContainer::IsOpaque to determine if the image will draw opaquely to all pixels it covers, and doing culling based on this.

However imgIContainer::IsOpaque doesn't guarantee anything. It only describes if the image, when in a decoded state, has all opaque pixels. So if the image doesn't have fully decoded frames around (because they got discarded) it may not draw opaquely to all of its pixels.

So we create a new function that first checks if there is a fully decoded frame.
2016-08-22 21:15:38 -05:00
Wes Kocher
b60cddc542 Backed out changeset 54933b5b96f1 (bug 1260324) for frequent windows reftest failures a=backout CLOSED TREE 2016-08-23 13:50:14 -07:00
Timothy Nikkel
8b16d4ef08 Bug 1260324. Don't draw garbage to the screen if an image doesn't happen to be decoded. r=seth
Layout has been using imgIContainer::IsOpaque to determine if the image will draw opaquely to all pixels it covers, and doing culling based on this.

However imgIContainer::IsOpaque doesn't guarantee anything. It only describes if the image, when in a decoded state, has all opaque pixels. So if the image doesn't have fully decoded frames around (because they got discarded) it may not draw opaquely to all of its pixels.

So we create a new function that first checks if there is a fully decoded frame.
2016-08-22 21:15:38 -05:00
Seth Fowler
ed50277add Bug 1293472 (Part 3) - Store animated images in the surface cache as a sequence of frames, rather than each frame getting its own cache entry. r=dholbert,edwin,njn 2016-08-18 15:42:48 -07:00
Seth Fowler
36fc5502bc Bug 1296147 (Part 2) - Rename imgFrame::GetSurface() to imgFrame::GetSourceSurface() for clarity. r=edwin 2016-08-18 13:03:49 -07:00
Seth Fowler
1459c724f5 Bug 1296147 (Part 1) - Add a DrawableSurface smart pointer type to allow lazy surface generation. r=dholbert,edwin 2016-08-18 13:03:44 -07:00
Timothy Nikkel
b756212169 Backed out changeset 37340346a89e (Bug 1289628 - Return ISurfaceProvider objects from SurfaceCache lookup functions. r=dholbert,edwin) for causing bug 1292290. 2016-08-15 19:58:35 -05:00
Seth Fowler
c11b85f5a0 Bug 1291071 (Part 6) - Stop passing a decoder to FinalizeDecoder() and rename it NotifyDecodeComplete(). r=edwin 2016-08-05 18:50:32 -07:00
Seth Fowler
4f4921678b Bug 1291071 (Part 5) - Pass the decoder's final status explicitly to FinalizeDecoder(). r=edwin 2016-08-05 18:50:31 -07:00
Seth Fowler
7dce2e7e42 Bug 1291071 (Part 4) - Clean up Decoder::SpeedHistogram() and related code. r=edwin 2016-08-05 18:50:29 -07:00
Seth Fowler
251ed225e5 Bug 1291071 (Part 3) - Pass telemetry explicitly to FinalizeDecoder. r=edwin 2016-08-05 18:50:27 -07:00
Seth Fowler
3cae096c3c Bug 1291071 (Part 2) - Pass decoder progress explicitly to FinalizeDecoder. r=edwin 2016-08-05 18:50:25 -07:00
Seth Fowler
fd4149ef5a Bug 1291071 (Part 1) - Pass ImageMetadata explicitly to FinalizeDecoder. r=edwin 2016-08-05 18:50:24 -07:00
Seth Fowler
0b15273908 Bug 1291071 (Part 1) - Move an assertion from RasterImage::FinalizeDecoder() to IDecodingTask::NotifyDecodeComplete(). r=edwin 2016-08-05 18:50:22 -07:00
Seth Fowler
414d097f49 Bug 1292505 (Part 1b) - Update DecoderFactory to use SetOutputSize(), and propagate the changes to RasterImage. r=edwin 2016-08-05 13:44:46 -07:00
Seth Fowler
814c9ae7f2 Bug 1290682 (Part 3) - Remove RasterImage::CopyFrame(). r=edwin 2016-08-01 17:51:20 -07:00
Seth Fowler
c1da0b5cd8 Bug 1290681 (Part 2) - Remove the single color optimization from imgFrame. r=edwin 2016-08-01 17:51:13 -07:00
Seth Fowler
94ad6a6148 Bug 1290747 - Fix bad assert in RasterImage::NotifyProgress(). r=edwin 2016-08-01 17:40:03 -07:00
Seth Fowler
cb1acecf4d Bug 1289957 (Part 2) - Notify RasterImage about new frames in NotifyProgress() and remove OnAddedFrame(). r=edwin 2016-07-28 00:12:50 -07:00
Seth Fowler
0d3a6a15a7 Bug 1289957 (Part 1) - Fix minor style issues in RasterImage::NotifyProgress. r=edwin 2016-07-28 00:12:49 -07:00
Seth Fowler
2f67bf08b8 Bug 1289628 - Return ISurfaceProvider objects from SurfaceCache lookup functions. r=dholbert,edwin 2016-07-27 13:54:23 -07:00
Nicolas Silva
3766bcc94a Bug 1284837 - Disallow implicit conversions from float to integer when creating IntPoint and IntSize objects. r=botond 2016-07-26 16:48:30 +02:00
Seth Fowler
6314dc2f19 Bug 1288040 (Part 11) - Clean up RefreshResult. r=edwin 2016-07-20 16:30:41 -07:00
Seth Fowler
f56d7a7e5d Bug 1288040 (Part 10) - Determine the first frame refresh area of animated images while decoding them. r=edwin 2016-07-20 16:30:39 -07:00
Seth Fowler
e17c8af16f Bug 1288040 (Part 9) - Determine the loop length of animated images while decoding them. r=edwin 2016-07-20 16:30:36 -07:00
Seth Fowler
31d99f8272 Bug 1288040 (Part 6) - Don't call GetTimeoutForFrame() in RasterImage. r=edwin 2016-07-20 16:30:30 -07:00
Seth Fowler
06d1ffb4e1 Bug 1288040 (Part 5) - Wrap frame timeout values in a FrameTimeout type that ensures they're normalized. r=edwin 2016-07-20 16:30:28 -07:00
Seth Fowler
b9f2a2e3d4 Bug 1288040 (Part 4) - We only need to check for infinitely long frames in StartAnimation() for the first frame. r=edwin 2016-07-20 16:30:26 -07:00
Seth Fowler
02cb209984 Bug 1288040 (Part 2) - Don't reset the last composited frame index when we reset animation. r=edwin 2016-07-20 16:30:21 -07:00
Seth Fowler
c81f435a61 Bug 1288040 (Part 1) - Separate FrameAnimator's state into a separate class, AnimationState. r=edwin 2016-07-20 16:30:19 -07:00
Seth Fowler
2ba15e348c Bug 1285867 (Part 1) - Remove Decoder's notion of decoder errors. r=edwin 2016-07-15 16:41:11 -07:00
Chris H-C
b243dfd2e4 Bug 1285006 - Remove IMAGE_MAX_DECODE_COUNT Telemetry r=gfritzsche, seth
It clears a histogram on the child process which is no longer allowed
(see bug 1218576)

MozReview-Commit-ID: GXWN7qpalAc
2016-07-13 11:53:00 +02:00
Seth Fowler
1f9b35837b Bug 1282354 - Move code for SurfaceCache placeholder insertion from RasterImage to DecoderFactory. r=dholbert 2016-07-02 18:47:49 -06:00
Seth Fowler
ef081c1091 Bug 1282327 (Part 2) - Update SurfaceCache documentation and method names to reflect the fact that cache entries are now ISurfaceProviders. r=dholbert 2016-07-02 18:47:45 -06:00
Seth Fowler
6a066f954f Bug 1282352 - Make DecoderFactory use NotNull where possible. r=edwin 2016-06-29 18:33:22 -07:00
Seth Fowler
a8b8626747 Bug 1282275 - Return IDecodingTask objects instead of Decoder objects from most DecoderFactory functions. r=dholbert 2016-06-29 18:33:18 -07:00
Seth Fowler
8b1954cb87 Bug 1282259 - Run IDecodingTasks instead of Decoders directly in image::DecodePool. r=dholbert 2016-06-29 13:46:27 -07:00
Jonathan Watt
fa7b69b631 Bug 1277862, part 3 - Rename Moz2D's Filter to SamplingFilter in the rest of the tree. r=Bas 2016-05-25 17:01:18 +01:00
Kyle Huey
b972c94d0f Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-05-05 01:45:00 -07:00
Georg Fritzsche
177db8aab7 Bug 1261063 - Part 3 - Make RasterImage use the public Telemetry API. r=tnikkel 2016-05-03 18:07:45 +02:00
Kyle Huey
a9cf047227 Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
Timothy Nikkel
b70a7769e1 Bug 1222596. If RasterImage::LookupFrame does (some) sync decoding and encouters an error we don't want to return the surface with an error. r=seth
If the sync decoding the LookupFrame does encounters an error it will set mError on the RasterImage, which LookupFrame callers check before calling LookupFrame. But they've called LookupFrame before the error was encountered, so we check if the frame has had Abort called on it to determine if we should return it at all.

We only does this if one of the sync decode flags was passed in because IsAborted needs to get the imgFrame's monitor, so we don't want to block consumers that haven't asked for decoding.
2016-04-01 12:44:17 -05:00
Timothy Nikkel
b4ce084794 Bug 1257101. imgFrame::IsImageComplete says whether we've had pixels decoded to the whole image rect, but it's used to check if the frame is finished decoding. These are different things when the image has more than one progress pass. r=seth
This means that in RasterImage::LookupFrame when we are asked to do a sync decode (if needed) we use WaitUntilComplete to wait until the frame is finished decoding.  But we would actually return after the next progressive pass notified the monitor to wake up. Thus, we would draw a not-fully-decoded image even though the sync decode flag was passed.

The change in FrameAnimator means that we won't draw the next frame in an animated image until all progressive passes of that image are complete. This seems like what we want anyways.

There is one real use of IsImageComplete left, in imgFrame::Draw, where we need to know if the decoded image data covers the whole image frame. (There are a couple of uses of IsImageComplete in asserts.)
2016-03-23 19:31:42 -05:00
Seth Fowler
f03c802cb4 Bug 1225934 - Never allow surface substitution when FLAG_HIGH_QUALITY_SCALING is disabled. r=tn 2016-03-07 17:17:16 -08:00
Seth Fowler
bfe1b0f74f Bug 1251806 - In RasterImage::GetFrameInternal(), check if the frame covers the actual surface size rather than the requested surface size. r=tn 2016-03-07 17:17:16 -08:00
Seth Fowler
33b90c6806 Bug 1251807 - Use the surface's size, not the intrinsic size, in CopyFrame. r=tn 2016-03-07 17:15:25 -08:00