• ccameron@chromium.org's avatar
    Do not send a frame swap ack from the browser until the frame is drawn · e990cbab
    ccameron@chromium.org authored
    Code to do this was recently removed because it was no longer being
    used in r241225 (https://codereview.chromium.org/116103002). This is
    now necessary again to throttle renderers when using CoreAnimation.
    
    Frames are acked only when they are drawn. Both the CoreAnimation and
    the non-CoreAnimation paths are changed to behave this way. By virtue
    of the fact that the non-CoreAnimation path draws immediately, this
    should have no functional effect on that path.
    
    This differs from the mechanism deleted in the aforementioned patch in
    two ways.
    
    First, it uses a scoped_ptr of a struct instead of a vector of pairs to
    store the information about the swap being returned. This should improve
    readability in that the ack has struct names instead of just first and
    second in the pair, and in that the scoped_ptr does not suggest support
    for multiple pending swaps (which does not exist).
    
    Second, it does makes RWHVMac ack frames more aggressively when
    inside a draw call, rather than adding a call from RWHImpl to the view,
    to effect the ack (which is what the old way does).
    
    BUG=340133
    
    Review URL: https://codereview.chromium.org/165703002
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251918 0039d316-1c4b-4281-b951-d872f2087c98
    e990cbab
compositing_iosurface_layer_mac.mm 6.65 KB