gecko-dev/image
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
..
build Bug 1160200 - APNG can't be used with type switching. r=mcaceres, r=jrmuizel, r=johns 2016-08-09 22:15:00 +02:00
decoders Bug 1330907 - Rename Telemetry::ID to Telemetry::HistogramID. r=dexter 2017-02-16 00:45:15 +05:30
encoders Bug 1060419 - remove unneeded includes of prprf.h, r=froydnj 2016-12-09 10:00:01 -10:00
test Bug 1341102 - Update stylo test expectations; r=bustage 2017-03-13 01:04:58 -07:00
AnimationSurfaceProvider.cpp Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
AnimationSurfaceProvider.h Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
BMPHeaders.h
ClippedImage.cpp Bug 1058040, part 12 - Make SVGImageContext's ctor's aViewportSize parameter optional. r=dholbert 2017-01-30 13:25:00 +00:00
ClippedImage.h Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
CopyOnWrite.h
DecodePool.cpp Bug 1339289 - Give names to a lot of common runnables (r=ehsan) 2017-02-15 12:30:01 -08:00
DecodePool.h Bug 1325296. RasterImage::LookupFrame does not return a surface if it was created as a result of a sync decode from with the FLAG_SYNC_DECODE_IF_FAST flag. r=aosmond 2016-12-22 13:15:41 -06:00
DecodedSurfaceProvider.cpp Bug 1333974, part 2 - Use new API for images. r=tnikkel 2017-01-31 11:34:01 -08:00
DecodedSurfaceProvider.h Bug 1296828 (Part 2) - Store ImageKeys and SurfaceKeys directly on ISurfaceProviders. r=dholbert,edwin 2016-08-26 17:03:17 -07:00
Decoder.cpp Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
Decoder.h Bug 1330907 - Rename Telemetry::ID to Telemetry::HistogramID. r=dexter 2017-02-16 00:45:15 +05:30
DecoderFactory.cpp Bug 1339202 - Decode images to shared surfaces for WebRender. r=tnikkel 2017-02-08 15:48:59 -05:00
DecoderFactory.h Bug 1311246 - Remove support for the -moz-samplesize media fragment; r=jrmuizel 2016-11-16 08:18:56 -05:00
DecoderFlags.h
Downscaler.cpp Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
Downscaler.h Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
DownscalingFilter.h Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
DrawResult.h Backed out 5 changesets (bug 1330962) for failures in display-block-baselines-1.html and 315920-17.html 2017-01-27 20:30:07 -08:00
DynamicImage.cpp Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
DynamicImage.h
FrameAnimator.cpp Backed out changeset 7f13c7a84acb (bug 1343341) for hitting a fatal assert that it added in RasterImage::OnSurfaceDiscard sometimes on android reftests. 2017-03-02 02:24:29 -06:00
FrameAnimator.h Backed out changeset 7f13c7a84acb (bug 1343341) for hitting a fatal assert that it added in RasterImage::OnSurfaceDiscard sometimes on android reftests. 2017-03-02 02:24:29 -06:00
FrozenImage.cpp Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
FrozenImage.h Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
ICOFileHeaders.h
IDecodingTask.cpp Bug 1339289 - Give names to a lot of common runnables (r=ehsan) 2017-02-15 12:30:01 -08:00
IDecodingTask.h 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
IProgressObserver.h Bug 1312319 - Add a NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING macro and replace existing pure-virtual AddRef/Release declarations. r=froydnj 2017-01-25 14:51:34 -05:00
ISurfaceProvider.h Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
Image.cpp Bug 1317552. Send unlocked draw notifications for images async when asked to. r=aosmond 2016-11-17 00:25:53 -06:00
Image.h Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
ImageCacheKey.cpp Bug 1328653 - Merging all the various *OriginAttributes to just one, r=huseby 2017-01-12 17:38:48 +01:00
ImageCacheKey.h Bug 1328653 - Merging all the various *OriginAttributes to just one, r=huseby 2017-01-12 17:38:48 +01:00
ImageFactory.cpp Bug 1311246 - Remove support for the -moz-samplesize media fragment; r=jrmuizel 2016-11-16 08:18:56 -05:00
ImageFactory.h
ImageLogging.h Bug 1282670, part 2: Remove unnecessary/redundant string-related #include & "using" declarations in imagelib. r=seth 2016-06-30 10:25:35 -07:00
ImageMetadata.h (No bug) - Fix a trivial formatting issue in ImageMetadata.h. r=me 2016-07-21 16:42:29 -07:00
ImageOps.cpp Bug 1337829 - ImageOps:DecodeToSurface may assert on a complete Sourcebuffer if ImageLib was not initialized. r=tnikkel 2017-02-24 16:38:24 +01:00
ImageOps.h
ImageRegion.h
ImageURL.h Bug 1299498 - Keep a main thread only pointer to the underlying nsIURI for ImageURL. r=tnikkel 2016-11-28 08:40:42 -05:00
ImageWrapper.cpp Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
ImageWrapper.h
LookupResult.h 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
MultipartImage.cpp Bug 1321946. Adjust asserts about the progress of an image to deal with how multipart images are handled. r=aosmond 2016-12-03 16:07:10 -06:00
MultipartImage.h
Orientation.h
OrientedImage.cpp Bug 1058040, part 12 - Make SVGImageContext's ctor's aViewportSize parameter optional. r=dholbert 2017-01-30 13:25:00 +00:00
OrientedImage.h Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
PlaybackType.h 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
ProgressTracker.cpp Bug 1339289 - Give names to a lot of common runnables (r=ehsan) 2017-02-15 12:30:01 -08:00
ProgressTracker.h Bug 1321946. Adjust asserts about the progress of an image to deal with how multipart images are handled. r=aosmond 2016-12-03 16:07:10 -06:00
RasterImage.cpp Backed out changeset 7f13c7a84acb (bug 1343341) for hitting a fatal assert that it added in RasterImage::OnSurfaceDiscard sometimes on android reftests. 2017-03-02 02:24:29 -06:00
RasterImage.h Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
SVGDocumentWrapper.cpp Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky 2017-01-05 15:31:56 +08:00
SVGDocumentWrapper.h Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky 2017-01-05 15:31:56 +08:00
ScriptedNotificationObserver.cpp Back out bug 1323207, part 2 - Assert early if we're painting at various points we enter JS (a=backout) 2017-01-11 13:20:21 -08:00
ScriptedNotificationObserver.h
ShutdownTracker.cpp Bug 1256981 - Make ShutdownTracker observe xpcom-will-shutdown instead of xpcom-shutdown. r=dholbert 2016-06-26 13:30:37 -07:00
ShutdownTracker.h Bug 1256981 - Make ShutdownTracker observe xpcom-will-shutdown instead of xpcom-shutdown. r=dholbert 2016-06-26 13:30:37 -07:00
SourceBuffer.cpp Bug 1284117 - Make RasterImage and SourceBuffer handle input stream read errors. r=edwin 2016-10-13 10:09:35 -04:00
SourceBuffer.h Bug 1312319 - Add a NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING macro and replace existing pure-virtual AddRef/Release declarations. r=froydnj 2017-01-25 14:51:34 -05:00
StreamingLexer.h Bug 1338374 - Use alignas/alignof to define Variant's internal raw storage. r=froydnj 2017-01-30 15:56:05 -08:00
SurfaceCache.cpp 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 2017-03-14 01:11:44 -05:00
SurfaceCache.h Bug 1296828 (Part 3) - Update SurfaceCache API to rely on ImageKeys and SurfaceKeys stored on ISurfaceProviders. r=dholbert 2016-08-26 17:03:19 -07:00
SurfaceCacheUtils.cpp Bug 1293449 - Stop exposing SurfaceCache implementation code outside of ImageLib. r=dholbert 2016-08-15 18:19:39 -07:00
SurfaceCacheUtils.h Bug 1293449 - Stop exposing SurfaceCache implementation code outside of ImageLib. r=dholbert 2016-08-15 18:19:39 -07:00
SurfaceFilters.h Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
SurfaceFlags.h
SurfacePipe.cpp Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
SurfacePipe.h Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions 2017-02-13 19:28:45 -08:00
SurfacePipeFactory.h Bug 1255107 (Part 2) - Add a SurfaceFilter for bilinear interpolation for ADAM7 interlaced images. f=glennrp,r=njn 2016-06-25 14:04:03 -07:00
VectorImage.cpp Bug 1345675 - Some cleanup and optimization of VectorImage::Draw. r=dholbert 2017-02-06 11:21:49 +00:00
VectorImage.h Bug 1296657: Attempt to create an mOptSurface of the correct type for the DT we're drawing to. r=tnikkel 2016-09-15 13:53:12 +02:00
imgFrame.cpp Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
imgFrame.h Bug 1341624 - Include shared handle totals in memory reports for images. r=tnikkel 2017-02-22 09:30:22 -05:00
imgICache.idl Bug 1297300 - Add missing checks to GetSpec() calls in image/. r=tnikkel. 2016-08-29 15:34:32 +10:00
imgIContainer.idl Bug 1323912 - Part 2. Pass opacity down to imgIContainer::Draw. r=mstange 2017-01-03 13:53:22 +08:00
imgIContainerDebug.idl
imgIEncoder.idl
imgILoader.idl
imgINotificationObserver.idl
imgIOnloadBlocker.idl
imgIRequest.idl Bug 1325297. Create a variant of imgIContainer::StartDecoding that returns if the current image frame is complete. r=aosmond 2016-12-23 01:07:45 -06:00
imgIScriptedNotificationObserver.idl
imgITools.idl
imgLoader.cpp Bug 1345168 - Get rid of OriginAttributes::Inherit, r=tjr 2017-03-08 07:41:51 +01:00
imgLoader.h Bug 1275464 - Part 1. Unregister from handling image memory reports when shutting down. r=njn 2016-09-19 13:29:59 -04:00
imgRequest.cpp Bug 1338086 - Remove useless else blocks in order to reduce complexity image/ r=dholbert 2017-02-10 13:52:27 +01:00
imgRequest.h Bug 1297300 - Add missing checks to GetSpec() calls in image/. r=tnikkel. 2016-08-29 15:34:32 +10:00
imgRequestProxy.cpp Bug 1339289 - Give names to a lot of common runnables (r=ehsan) 2017-02-15 12:30:01 -08:00
imgRequestProxy.h Bug 1339289 - Give names to a lot of common runnables (r=ehsan) 2017-02-15 12:30:01 -08:00
imgTools.cpp
imgTools.h
moz.build Bug 1293472 (Part 2) - Add AnimationSurfaceProvider. r=dholbert,edwin 2016-08-18 15:39:43 -07:00
nsIIconURI.idl