Async image decoding should only be used for window display where RenderElements can be repainted and painted. For cases where there is only one chance to draw the image, synchronous decoding should be used.
Created attachment 308625 [details] Patch
<rdar://problem/31308092>
Comment on attachment 308625 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=308625&action=review > Source/WebCore/page/FrameView.cpp:4410 > + frame().settings().setLargeImageAsyncDecodingEnabled(false); We don't generally toggle settings as a way of setting temporary runtime state; toggling settings can have side effects like all-frame style recalcs. Why not just test (view().frameView().paintBehavior() & PaintBehaviorFlattenCompositingLayers) as we do in RenderBox::paintMaskImages?
Created attachment 308748 [details] Patch
Is this testable (say, with an API test)?
Created attachment 308921 [details] Patch
Comment on attachment 308921 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=308921&action=review > Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewSnapshot.mm:271 > + CGContextRef context = CGBitmapContextCreate(rgba, viewWidth, viewHeight, 8, 4 * viewWidth, colorSpace.get(), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); We we use RetainPtr<> = adoptCF() here?
Created attachment 308935 [details] Patch
Comment on attachment 308935 [details] Patch Clearing flags on attachment: 308935 Committed r216135: <http://trac.webkit.org/changeset/216135>
All reviewed patches have been landed. Closing bug.