gecko-dev/image
Timothy Nikkel c73c31cbe8 Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond
When not using blob recordings for vector images we use simple surface providers. When we get an invalidation we will call SurfaceCache::InvalidateImage which will set a dirty bit on all blob recordings and remove all other surfaces from the surface cache. And if it finds a blob recording we will call ResumeHonoringInvalidations. This is not enough to invalidate in the case of a non-animated vector image using the webrender GetImageProvider path. Even though the surface isn't in the surface cache anymore it is still cached on the frame and when we tell it about the invalidation it will just has the image provider to update its key. That will call this code

https://searchfox.org/mozilla-central/rev/cdddec7fd690700efa4d6b48532cf70155e0386b/image/DecodedSurfaceProvider.cpp#222

which will just share the same surface as before the invalidation happened again. That will let us handle one invalidation but it still won't fix the bug, we need to call ResumeHonoringInvalidations so that we handle further invalidations.

When not using the image provider path, we don't save an image provider on the frame, that alone would avoid this problem. But we also call ResumeHonoringInvalidations for every successful call of VectorImage::Draw.

* * *
imported patch asvfref

Differential Revision: https://phabricator.services.mozilla.com/D174450
2024-05-02 01:45:32 +00:00
..
build Bug 1866010 p2. Update UpdateContentViewerRegistration to reflect nsIDocumentViewer's new name. r=emilio 2023-11-24 09:10:48 +00:00
decoders Bug 1890090. Check return value of WebPInitDecBuffer in webp decoder. r=gfx-reviewers,lsalzman 2024-04-06 04:27:37 +00:00
encoders Bug 1872536 - Use MakeUniqueFallible for large buffers in image decoders/encoders. r=gfx-reviewers,lsalzman 2023-12-31 22:16:46 +00:00
test Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
AnimationFrameBuffer.cpp
AnimationFrameBuffer.h
AnimationParams.h
AnimationSurfaceProvider.cpp
AnimationSurfaceProvider.h
AutoRestoreSVGState.h
BlobSurfaceProvider.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
BlobSurfaceProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
BMPHeaders.h
ClippedImage.cpp Bug 1276351: apply code formatting via Lando 2023-03-27 07:23:36 +00:00
ClippedImage.h
CopyOnWrite.h
DecodedSurfaceProvider.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
DecodedSurfaceProvider.h
DecodePool.cpp Bug 1846407 - Use enum class for Task::Run return value. r=bas,win-reviewers,rkraesig 2023-10-18 15:23:29 +00:00
DecodePool.h Bug 1826206 - Require nsISerialEventTarget for RetargetDeliveryTo, r=necko-reviewers,valentin 2023-06-07 14:48:38 +00:00
Decoder.cpp
Decoder.h
DecoderFactory.cpp Bug 1641389 - Remove image.webp.enabled pref, always on by default. r=necko-reviewers,tnikkel,valentin 2023-09-15 19:36:34 +00:00
DecoderFactory.h Bug 1813466 - Store AVIF prefs as default decoder flags in RasterImage. r=tnikkel 2023-03-17 00:50:07 +00:00
DecoderFlags.h Bug 1813466 - Store AVIF prefs as default decoder flags in RasterImage. r=tnikkel 2023-03-17 00:50:07 +00:00
Downscaler.cpp Bug 1857746 - Remove std max in downscaler. r=sylvestre DONTBUILD 2023-10-30 08:12:41 +00:00
Downscaler.h
DownscalingFilter.h
DynamicImage.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
DynamicImage.h
FrameAnimator.cpp
FrameAnimator.h
FrameTimeout.h
FrozenImage.cpp
FrozenImage.h
ICOFileHeaders.h
IDecodingTask.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
IDecodingTask.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
Image.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
Image.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
ImageBlocker.cpp Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageBlocker.h Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageCacheKey.cpp Bug 1873490, part 1 - Refactor the only external call to StorageDisabledByAntiTracking - r=anti-tracking-reviewers,timhuang 2024-01-12 17:03:20 +00:00
ImageCacheKey.h Bug 1832528 - Make cors mode part of the image cache key. r=tnikkel 2023-05-25 22:25:31 +00:00
ImageFactory.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
ImageFactory.h
ImageLogging.h
ImageMemoryReporter.cpp
ImageMemoryReporter.h
ImageMetadata.h
ImageOps.cpp
ImageOps.h
ImageRegion.h
ImageWrapper.cpp
ImageWrapper.h
ImgDrawResult.h Bug 1519636 - Reformat recent changes to the Google coding style. r=glandium 2023-02-13 15:02:07 +00:00
imgFrame.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
imgFrame.h Bug 1856795 - ride along: use = default; on some recently modified files r=emilio 2023-10-15 15:29:03 +00:00
imgICache.idl
imgIContainer.idl
imgIContainerDebug.idl
imgIEncoder.idl
imgILoader.idl
imgINotificationObserver.idl
imgIRequest.idl Bug 1881863 - Part 1: Standardize on boolean over bool in xpidl, r=xpcom-reviewers,necko-reviewers,valentin,extension-reviewers,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,search-reviewers,anti-tracking-reviewers,places-reviewers,nalexander,emilio,zombie,sgalich,karlt,lina,Standard8 2024-04-04 18:45:21 +00:00
imgIScriptedNotificationObserver.idl
imgITools.idl
imgLoader.cpp Bug 1872657 - Add fetchpriority support for <link rel=preload as=image>. r=valentin,smaug,manuel 2024-02-27 06:33:48 +00:00
imgLoader.h Bug 1519636 - Reformat recent changes to the Google coding style r=emilio,media-playback-reviewers,padenot 2024-04-22 16:00:09 +00:00
imgRequest.cpp Bug 1356686 - Ensure that imgRequest::CheckListenerChain returns the correct value r=tnikkel 2024-03-19 17:27:23 +00:00
imgRequest.h Bug 1356686 - Ensure that imgRequest::CheckListenerChain returns the correct value r=tnikkel 2024-03-19 17:27:23 +00:00
imgRequestProxy.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
imgRequestProxy.h Bug 1722322 - Implement LargestContentfulPaint r=emilio 2023-11-02 20:53:36 +00:00
imgTools.cpp
imgTools.h
IProgressObserver.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ISurfaceProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
LookupResult.h
moz.build Bug 1859893 - batch 15 - migrate xpcshell.ini -> .toml. r=aryx,geckoview-reviewers,extension-reviewers,valentin,cookie-reviewers,pbz,owlish,robwu 2023-11-24 14:41:35 +00:00
MultipartImage.cpp Bug 1862059. Handle edge cases of svg images in multipart images. r=aosmond,gfx-reviewers 2024-01-02 07:13:01 +00:00
MultipartImage.h
nsIIconURI.idl Bug 1883217 - Remove unused defines in IDL files r=webdriver-reviewers,necko-reviewers,credential-management-reviewers,places-reviewers,dom-core,Standard8,valentin,mccr8,sgalich 2024-03-06 19:04:25 +00:00
Orientation.h
OrientedImage.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
OrientedImage.h
PlaybackType.h
ProgressTracker.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ProgressTracker.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
RasterImage.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
RasterImage.h Bug 1813466 - Store AVIF prefs as default decoder flags in RasterImage. r=tnikkel 2023-03-17 00:50:07 +00:00
Resolution.h
ScriptedNotificationObserver.cpp
ScriptedNotificationObserver.h
ShutdownTracker.cpp
ShutdownTracker.h
SourceBuffer.cpp Bug 1273714: Remove an imagelib warning that's more spammy than useful at this point. r=tnikkel DONTBUILD 2023-09-27 23:27:13 +00:00
SourceBuffer.h
StreamingLexer.h
SurfaceCache.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
SurfaceCache.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
SurfaceCacheUtils.cpp
SurfaceCacheUtils.h
SurfaceFilters.h
SurfaceFlags.h
SurfacePipe.cpp
SurfacePipe.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
SurfacePipeFactory.h
SVGDocumentWrapper.cpp Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio 2023-11-21 12:45:59 +00:00
SVGDocumentWrapper.h Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio 2023-11-21 12:45:59 +00:00
SVGDrawingCallback.h
SVGDrawingParameters.h
VectorImage.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
VectorImage.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
WebRenderImageProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00