Bug 169943 - When the browser window is activated or deactivated, images can flash
Summary: When the browser window is activated or deactivated, images can flash
Status: RESOLVED DUPLICATE of bug 170640
Alias: None
Product: WebKit
Classification: Unclassified
Component: Images (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2017-03-21 20:12 PDT by Simon Fraser (smfr)
Modified: 2017-05-29 15:53 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Simon Fraser (smfr) 2017-03-21 20:12:51 PDT
We can get flashes of undecided images when the browser window goes between foreground and background.

This happens because tile size changes trigger painting, and we may have thrown away decoded data via the MemoryCache pruning timer, so we have to re-decode async and thus flash.
Comment 1 Simon Fraser (smfr) 2017-03-21 20:48:05 PDT
So the memory cache prunes on a timer, and destroys decoded image data via:

  * frame #0: 0x0000000117c78a9c WebCore`WebCore::BitmapImage::destroyDecodedData(this=0x0000000123a345c0, destroyAll=true) at BitmapImage.cpp:68
    frame #1: 0x0000000117cbade3 WebCore`WebCore::CachedImage::destroyDecodedData(this=0x00000001297bf200) at CachedImage.cpp:489
    frame #2: 0x0000000119987629 WebCore`WebCore::MemoryCache::pruneLiveResourcesToSize(this=0x000000011b9ff1d0, targetSize=95630128, shouldDestroyDecodedDataForAllLiveResources=false) at MemoryCache.cpp:338
    frame #3: 0x0000000119987486 WebCore`WebCore::MemoryCache::pruneLiveResources(this=0x000000011b9ff1d0, shouldDestroyDecodedDataForAllLiveResources=false) at MemoryCache.cpp:265
    frame #4: 0x000000011998526a WebCore`WebCore::MemoryCache::prune(this=0x000000011b9ff1d0) at MemoryCache.cpp:731
...
    frame #10: 0x000000011998cff9 WebCore`std::__1::__function::__func<std::__1::__bind<void (WebCore::MemoryCache::*&)(), WebCore::MemoryCache*>, std::__1::allocator<std::__1::__bind<void (WebCore::MemoryCache::*&)(), WebCore::MemoryCache*> >, void ()>::operator(this=0x000000011b9ff3a0)() at functional:1437
    frame #11: 0x0000000117ab6b0a WebCore`std::__1::function<void ()>::operator(this=0x000000011b9ff3a0)() const at functional:1817
    frame #12: 0x0000000117ab6a29 WebCore`WebCore::Timer::fired(this=0x000000011b9ff360) at Timer.h:148
Comment 2 Radar WebKit Bug Importer 2017-03-23 09:38:13 PDT
<rdar://problem/31221177>
Comment 3 Simon Fraser (smfr) 2017-05-27 08:21:13 PDT
Said, I think you've fixed this?
Comment 4 Jon Lee 2017-05-29 15:53:51 PDT

*** This bug has been marked as a duplicate of bug 170640 ***