gecko-dev/image
Andrew Osmond 4130525818 Bug 1611127 - Fix how images with optimized surfaces may go missing on Windows. r=tnikkel
On Windows, optimized surfaces can become invalid due to a device reset
or GPU process crash when D2D draw targets were being used. This is
because SourceSurfaceD2D1 checks if the D2D context has changed from the
one it was optimized for.

We assumed when creating a DrawableFrameRef that if we don't have
imgFrame::mRawSurface, then we must have an imgFrame::mOptSurface. This
is incorrect and causes SurfaceCache to believe it has a valid
DrawableSurface, even if the underlying optimized surface cannot be used
for drawing (or has already been freed).

If we can't draw the image, it goes missing from the screen. But since
the cache thinks it has a valid surface, we never actually redecode it.
With this patch, we now check if the imgFrame::mOptSurface has been
freed already, and if not, that it remains valid for drawing purposes.
If either condition is true, the SurfaceCache entry will be removed,
thus permitting a redecode attempt.

Differential Revision: https://phabricator.services.mozilla.com/D60834

--HG--
extra : moz-landing-system : lando
2020-01-23 22:19:40 +00:00
..
build Bug 1357107 - Move the handling of the permissions.default.image pref to ImageBlocker.cpp. Original patch by ehsan. r=bzbarsky 2020-01-22 10:45:15 +00:00
decoders Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
encoders Bug 1552317 - Fix codespell errors for image/. r=tnikkel 2019-09-12 09:00:52 +00:00
test Bug 1588980 - Part 1: Hide HTMLCanvasElement.mozGetAsFile behind a preference; r=bzbarsky 2020-01-20 22:03:13 +00:00
AnimationFrameBuffer.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
AnimationFrameBuffer.h Bug 1510601 - Part 1. Move size increments into AnimationFrameBuffer::InsertInternal. r=tnikkel 2018-12-05 12:04:20 -05:00
AnimationParams.h Bug 1530774 - Part 3. Remove decoder support for producing paletted frames. r=tnikkel 2019-03-18 07:30:34 -04:00
AnimationSurfaceProvider.cpp Bug 1570499 - Part 1: Replace MOZ_FALLTHROUGH macro with C++17's [[fallthrough]] attribute. r=froydnj 2019-12-20 07:16:43 +00:00
AnimationSurfaceProvider.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
BMPHeaders.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ClippedImage.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
ClippedImage.h Bug 1547792 - AspectRatio should be a single ratio, not a size. r=dholbert 2019-05-02 23:28:21 +00:00
CopyOnWrite.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
DecodePool.cpp Bug 1602710 - Do not shut down threads not found in the image decode thread pool. r=tnikkel 2020-01-06 23:40:08 +00:00
DecodePool.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
DecodedSurfaceProvider.cpp Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
DecodedSurfaceProvider.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
Decoder.cpp Bug 1255106 - Part 1. Move color transform state to image decoder base class. r=tnikkel 2019-05-28 11:38:46 -04:00
Decoder.h Bug 1255106 - Part 1. Move color transform state to image decoder base class. r=tnikkel 2019-05-28 11:38:46 -04:00
DecoderFactory.cpp Bug 1561491 - Make image.* static prefs follow the naming convention. r=KrisWright 2019-06-26 13:24:21 +10:00
DecoderFactory.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
DecoderFlags.h Bug 1530774 - Part 3. Remove decoder support for producing paletted frames. r=tnikkel 2019-03-18 07:30:34 -04:00
Downscaler.cpp Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel 2019-05-26 14:31:53 +00:00
Downscaler.h Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre 2019-01-18 10:16:18 +01:00
DownscalingFilter.h Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel 2019-11-12 18:22:33 +00:00
DynamicImage.cpp Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel 2019-11-12 18:22:33 +00:00
DynamicImage.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
FrameAnimator.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
FrameAnimator.h Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
FrameTimeout.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
FrozenImage.cpp Bug 1550523 - Ensure that decoding methods for frozen images request the correct frame. r=tnikkel 2019-05-22 06:22:50 -04:00
FrozenImage.h Bug 1550523 - Ensure that decoding methods for frozen images request the correct frame. r=tnikkel 2019-05-22 06:22:50 -04:00
ICOFileHeaders.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
IDecodingTask.cpp Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel 2019-05-26 14:31:53 +00:00
IDecodingTask.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
IProgressObserver.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ISurfaceProvider.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
Image.cpp Bug 1610381 - Part 3. Improve image memory reporting by including validation state. r=jrmuizel 2020-01-21 16:32:11 +00:00
Image.h Bug 1610381 - Part 3. Improve image memory reporting by including validation state. r=jrmuizel 2020-01-21 16:32:11 +00:00
ImageBlocker.cpp Bug 1357107 - Move the handling of the permissions.default.image pref to ImageBlocker.cpp. Original patch by ehsan. r=bzbarsky 2020-01-22 10:45:15 +00:00
ImageBlocker.h Bug 1357107 - Move the handling of the permissions.default.image pref to ImageBlocker.cpp. Original patch by ehsan. r=bzbarsky 2020-01-22 10:45:15 +00:00
ImageCacheKey.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
ImageCacheKey.h Bug 1558915 - Use infallible nsIURI::SchemeIs in image/ r=tnikkel 2019-08-03 09:44:12 +00:00
ImageFactory.cpp Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan 2019-12-06 09:16:44 +00:00
ImageFactory.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImageLogging.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImageMemoryReporter.cpp Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
ImageMemoryReporter.h Bug 1552317 - Fix codespell errors for image/. r=tnikkel 2019-09-12 09:00:52 +00:00
ImageMetadata.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImageOps.cpp Bug 1545567 - Ensure ImageOps decode methods can handle unbuffered input streams properly. r=baku 2019-04-26 11:58:24 -04:00
ImageOps.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImageRegion.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImageWrapper.cpp Bug 1550523 - Ensure that decoding methods for frozen images request the correct frame. r=tnikkel 2019-05-22 06:22:50 -04:00
ImageWrapper.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ImgDrawResult.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
LookupResult.h Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
MultipartImage.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
MultipartImage.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
Orientation.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
OrientedImage.cpp Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel 2019-11-12 18:22:33 +00:00
OrientedImage.h Bug 1547792 - AspectRatio should be a single ratio, not a size. r=dholbert 2019-05-02 23:28:21 +00:00
PlaybackType.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ProgressTracker.cpp Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan 2019-12-06 09:16:44 +00:00
ProgressTracker.h Bug 1552317 - Fix codespell errors for image/. r=tnikkel 2019-09-12 09:00:52 +00:00
RasterImage.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
RasterImage.h Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan 2019-12-06 09:16:44 +00:00
RecyclingSourceSurface.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
SVGDocumentWrapper.cpp Bug 1523638 - Part 9: Use provided 'WindowGlobalChild' actors to create the initial about:blank document, r=kmag 2019-08-08 16:07:12 +00:00
SVGDocumentWrapper.h Bug 1544215 - Make nsIContentVewer::GetPresShell() return mozilla::PresShell instead of nsIPresShell r=bzbarsky 2019-04-16 02:47:26 +00:00
SVGDrawingParameters.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ScriptedNotificationObserver.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ScriptedNotificationObserver.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ShutdownTracker.cpp Bug 1523969 part 10 - Move method definition inline comments to new line in 'image/'. r=aosmond 2019-02-25 16:07:58 -06:00
ShutdownTracker.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
SourceBuffer.cpp Bug 1523969 part 10 - Move method definition inline comments to new line in 'image/'. r=aosmond 2019-02-25 16:07:58 -06:00
SourceBuffer.h Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
StreamingLexer.h Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
SurfaceCache.cpp Bug 1610381 - Improve image memory reporting for missing/incomplete surfaces. r=tnikkel 2020-01-21 09:59:15 +00:00
SurfaceCache.h Bug 1543584 - Always rasterize SVGs but clamp the maximum size. r=tnikkel 2019-04-18 14:35:58 -04:00
SurfaceCacheUtils.cpp Bug 1523969 part 10 - Move method definition inline comments to new line in 'image/'. r=aosmond 2019-02-25 16:07:58 -06:00
SurfaceCacheUtils.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
SurfaceFilters.h Bug 1609996 - Remove mozilla::Swap in favor of std::swap. r=froydnj 2020-01-20 16:17:06 +00:00
SurfaceFlags.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
SurfacePipe.cpp Bug 1551088 - Part 5. Expose SurfaceFilter input row directly to avoid copy if possible. r=tnikkel 2019-10-02 13:37:28 +00:00
SurfacePipe.h Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
SurfacePipeFactory.h Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel 2019-11-12 18:22:33 +00:00
VectorImage.cpp Bug 1610165 - Failing to insert an SVG into the surface cache continuously repaints the image. r=tnikkel 2020-01-19 23:02:52 +00:00
VectorImage.h Bug 1598480 - Make SVG images respond to theme changes. r=tnikkel,emilio 2019-12-13 02:04:07 +00:00
imgFrame.cpp Bug 1610381 - Improve image memory reporting for missing/incomplete surfaces. r=tnikkel 2020-01-21 09:59:15 +00:00
imgFrame.h Bug 1611127 - Fix how images with optimized surfaces may go missing on Windows. r=tnikkel 2020-01-23 22:19:40 +00:00
imgICache.idl Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug 2019-01-03 17:48:33 +01:00
imgIContainer.idl Bug 1610381 - Part 2. Improve image memory reporting with more state information. r=jrmuizel 2020-01-21 14:39:59 +00:00
imgIContainerDebug.idl
imgIEncoder.idl
imgILoader.idl Bug 1552317 - Fix codespell errors for image/. r=tnikkel 2019-09-12 09:00:52 +00:00
imgINotificationObserver.idl
imgIRequest.idl Bug 1554847 - Improve cross-origin checks in canvas API - imgIRequest.hadCrossOriginRedirects, r=aosmond 2019-06-04 06:31:42 +00:00
imgIScriptedNotificationObserver.idl
imgITools.idl Bug 1530402 - Provide imgTools.decodeFromChannelAsync. r=aosmond,snorp 2019-11-18 16:48:53 +00:00
imgLoader.cpp Bug 1526731 - handle image.http.accept pref inside netwerk instead of forcing all consumers to do the same dance, r=valentin,aosmond 2020-01-23 08:36:48 +00:00
imgLoader.h Bug 1526731 - handle image.http.accept pref inside netwerk instead of forcing all consumers to do the same dance, r=valentin,aosmond 2020-01-23 08:36:48 +00:00
imgRequest.cpp Bug 1558915 - Use infallible nsIURI::SchemeIs everywhere. r=smaug 2019-08-09 15:17:06 +00:00
imgRequest.h Bug 1580820. Update the inner window id as well as the context (document) pointer on an imgRequest if we validate it for that document/inner window id. r=aosmond 2019-09-17 13:16:19 +00:00
imgRequestProxy.cpp Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj 2020-01-20 16:19:48 +00:00
imgRequestProxy.h Bug 1552317 - Fix codespell errors for image/. r=tnikkel 2019-09-12 09:00:52 +00:00
imgTools.cpp Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan 2020-01-09 21:50:11 +00:00
imgTools.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
moz.build Bug 1357107 - Move the handling of the permissions.default.image pref to ImageBlocker.cpp. Original patch by ehsan. r=bzbarsky 2020-01-22 10:45:15 +00:00
nsIIconURI.idl