Changeset 224716 in webkit


Ignore:
Timestamp:
Nov 10, 2017 5:07:47 PM (6 years ago)
Author:
Simon Fraser
Message:

Compositing layers in UIWebView are often missing content after scrolling
https://bugs.webkit.org/show_bug.cgi?id=179564
rdar://problem/33885639

Reviewed by Tim Horton.

When dropping backing store for layers outside the viewport, we rely on a compositing
layer flush to compute layer visibility and bring the backing store back when necessary.

In UIWebView, we have a mechanism to trigger flushing on user scrolling but it only triggers
when there are tiled layers. Remove that condition so it triggers always, now that
backing store availability also depends on this.

  • page/ios/FrameIOS.mm:

(WebCore::Frame::viewportOffsetChanged):
(WebCore::anyFrameHasTiledLayers): Deleted.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r224715 r224716  
     12017-11-10  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Compositing layers in UIWebView are often missing content after scrolling
     4        https://bugs.webkit.org/show_bug.cgi?id=179564
     5        rdar://problem/33885639
     6
     7        Reviewed by Tim Horton.
     8       
     9        When dropping backing store for layers outside the viewport, we rely on a compositing
     10        layer flush to compute layer visibility and bring the backing store back when necessary.
     11
     12        In UIWebView, we have a mechanism to trigger flushing on user scrolling but it only triggers
     13        when there are tiled layers. Remove that condition so it triggers always, now that
     14        backing store availability also depends on this.
     15
     16        * page/ios/FrameIOS.mm:
     17        (WebCore::Frame::viewportOffsetChanged):
     18        (WebCore::anyFrameHasTiledLayers): Deleted.
     19
    1202017-11-10  Simon Fraser  <simon.fraser@apple.com>
    221
  • trunk/Source/WebCore/page/ios/FrameIOS.mm

    r224510 r224716  
    700700}
    701701
    702 static bool anyFrameHasTiledLayers(Frame* rootFrame)
    703 {
    704     for (Frame* frame = rootFrame; frame; frame = frame->tree().traverseNext(rootFrame)) {
    705         if (frame->containsTiledBackingLayers())
    706             return true;
    707     }
    708     return false;
    709 }
    710 
    711702void Frame::viewportOffsetChanged(ViewportOffsetChangeType changeType)
    712703{
     
    714705
    715706    if (changeType == IncrementalScrollOffset) {
    716         if (anyFrameHasTiledLayers(this)) {
    717             if (RenderView* root = contentRenderer())
    718                 root->compositor().didChangeVisibleRect();
    719         }
     707        if (RenderView* root = contentRenderer())
     708            root->compositor().didChangeVisibleRect();
    720709    }
    721710
Note: See TracChangeset for help on using the changeset viewer.