Skip to content
  • commit-queue@webkit.org's avatar
    [BlackBerry] BackingStore accesses tiles even though it's not active · 9095a2fe
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=87563
    
    Patch by Arvid Nilsson <anilsson@rim.com> on 2012-04-18
    Reviewed by Antonio Gomes.
    
    There are many scenarios that can call render and cause tile access,
    and they used to be rerouted to the direct rendering code when the
    backing store was not active. This was thanks to an implicit check for
    isActive() by virtue of calling shouldDirectRenderingToWindow() from
    render().
    
    If we're using OpenGL for compositing the backing store contents
    however, direct rendering is always disabled and we jump right into the
    tile based rendering code.
    
    Fixed by adding an explicit check for isActive() in render(), now that
    the implicit check in shouldDirectRenderingToWindow() is conditional on
    having raster usage.
    
    Since PR136381/bug83131, when OpenGL compositing is used, and the
    backing store is not active, it is not in charge of drawing the root
    layer. Instead, we switch off the paintingGoesToWindow flag on the root
    RenderLayer so no invalidates will reach the ChromeClient or the
    BackingStore any more. Instead, invalidations will cause the root
    accelerated compositing layer to be repainted. Any BackingStore render
    calls while in this state are pointless, and can safely do an early
    return.
    
    Reviewed internally by Jakob Petsovits.
    
    PR #150403
    
    * Api/BackingStore.cpp:
    (BlackBerry::WebKit::BackingStorePrivate::render):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@118626 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    9095a2fe