Changeset 158372 in webkit


Ignore:
Timestamp:
Oct 31, 2013 11:05:25 AM (10 years ago)
Author:
barraclough@apple.com
Message:

Change WebPage, WebPageProxy, WebPageCreationParameters to use ViewState
https://bugs.webkit.org/show_bug.cgi?id=123379

Reviewed by Darin Adler.

Visibility state of the Page should be stored and communicated consistently.

Remove individual visibility flags from WebPageProxy, WebPageCreationParameters,
and replace them with a ViewState, and add a ViewState member to WebPage.
Merge together all messages that convey and individual aspect of the ViewState.

Restructure WebPageProxy::viewStateDidChange to break the operation down into
three steps: 1) update m_viewState, 2) send the new ViewState to the WebProcess,
and 3) perform any further work necessary in the UIProcess.

This patch fixes a problem that if the web process crashes m_isVisible &
m_isInWindow in WebPageProxy were not updated, and could have held stale values
on reattach.

In WebPage, add a new message to update the entire ViewState - diff the prior
value against the new one to detect changes, call existing methods accordingly.

  • Shared/ViewState.h:
    • Add constants 'Reset', 'AllFlags'
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
    • Removed boolean visibility flags, added viewState.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):

  • Constructor calls updateViewState to initialize m_viewState.

(WebKit::WebPageProxy::reattachToWebProcess):

  • ViewStaet is not updated while detatched; recalculate.

(WebKit::WebPageProxy::initializeWebPage):

  • m_isVisible -> isViewVisible()

(WebKit::WebPageProxy::updateViewState):

  • Added, update m_viewState by querying the page client.

(WebKit::WebPageProxy::viewStateDidChange):

  • Restructured to use m_viewState, reordered to combine messages.

(WebKit::WebPageProxy::creationParameters):

  • Removed boolean visibility flags, added viewState.
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isInWindow):
(WebKit::WebPageProxy::isViewVisible):

  • Removed boolean visibility flags, added viewState.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • initial state now passed as a ViewState.

(WebKit::WebPage::setIsInWindow):

  • Remove code to send reply (this is handled by setViewState).

(WebKit::WebPage::setViewState):

  • Set m_viewState - diff from prior & call methods to update.
  • WebProcess/WebPage/WebPage.h:
    • Added setViewState, m_viewState.
  • WebProcess/WebPage/WebPage.messages.in:
    • Add SetViewState, remove individual messages.
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

  • initial state now passed as a ViewState.
Location:
trunk/Source/WebKit2
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r158369 r158372  
     12013-10-31  Gavin Barraclough  <barraclough@apple.com>
     2
     3        Change WebPage, WebPageProxy, WebPageCreationParameters to use ViewState
     4        https://bugs.webkit.org/show_bug.cgi?id=123379
     5
     6        Reviewed by Darin Adler.
     7
     8        Visibility state of the Page should be stored and communicated consistently.
     9
     10        Remove individual visibility flags from WebPageProxy, WebPageCreationParameters,
     11        and replace them with a ViewState, and add a ViewState member to WebPage.
     12        Merge together all messages that convey and individual aspect of the ViewState.
     13
     14        Restructure WebPageProxy::viewStateDidChange to break the operation down into
     15        three steps: 1) update m_viewState, 2) send the new ViewState to the WebProcess,
     16        and 3) perform any further work necessary in the UIProcess.
     17
     18        This patch fixes a problem that if the web process crashes m_isVisible &
     19        m_isInWindow in WebPageProxy were not updated, and could have held stale values
     20        on reattach.
     21
     22        In WebPage, add a new message to update the entire ViewState - diff the prior
     23        value against the new one to detect changes, call existing methods accordingly.
     24
     25        * Shared/ViewState.h:
     26            - Add constants 'Reset', 'AllFlags'
     27        * Shared/WebPageCreationParameters.cpp:
     28        (WebKit::WebPageCreationParameters::encode):
     29        (WebKit::WebPageCreationParameters::decode):
     30        * Shared/WebPageCreationParameters.h:
     31            - Removed boolean visibility flags, added viewState.
     32        * UIProcess/WebPageProxy.cpp:
     33        (WebKit::WebPageProxy::WebPageProxy):
     34            - Constructor calls updateViewState to initialize m_viewState.
     35        (WebKit::WebPageProxy::reattachToWebProcess):
     36            - ViewStaet is not updated while detatched; recalculate.
     37        (WebKit::WebPageProxy::initializeWebPage):
     38            - m_isVisible -> isViewVisible()
     39        (WebKit::WebPageProxy::updateViewState):
     40            - Added, update m_viewState by querying the page client.
     41        (WebKit::WebPageProxy::viewStateDidChange):
     42            - Restructured to use m_viewState, reordered to combine messages.
     43        (WebKit::WebPageProxy::creationParameters):
     44            - Removed boolean visibility flags, added viewState.
     45        * UIProcess/WebPageProxy.h:
     46        (WebKit::WebPageProxy::isInWindow):
     47        (WebKit::WebPageProxy::isViewVisible):
     48            - Removed boolean visibility flags, added viewState.
     49        * WebProcess/WebPage/WebPage.cpp:
     50        (WebKit::WebPage::WebPage):
     51            - initial state now passed as a ViewState.
     52        (WebKit::WebPage::setIsInWindow):
     53            - Remove code to send reply (this is handled by setViewState).
     54        (WebKit::WebPage::setViewState):
     55            - Set m_viewState - diff from prior & call methods to update.
     56        * WebProcess/WebPage/WebPage.h:
     57            - Added setViewState, m_viewState.
     58        * WebProcess/WebPage/WebPage.messages.in:
     59            - Add SetViewState, remove individual messages.
     60        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
     61        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
     62            - initial state now passed as a ViewState.
     63
    1642013-10-30  Gavin Barraclough  <barraclough@apple.com>
    265
  • trunk/Source/WebKit2/Shared/ViewState.h

    r158028 r158372  
    3737        WindowIsVisible = 1 << 4
    3838    };
     39
    3940    typedef unsigned Flags;
     41
     42    static const Flags NoFlags = 0;
     43    static const Flags AllFlags = WindowIsActive | IsFocused | IsVisible | IsInWindow | WindowIsVisible;
    4044};
    4145
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp

    r153378 r158372  
    3434{
    3535    encoder << viewSize;
    36     encoder << isActive;
    37     encoder << isFocused;
    38     encoder << isVisible;
    39     encoder << isInWindow;
     36    encoder << viewState;
    4037
    4138    encoder << store;
     
    7471    if (!decoder.decode(parameters.viewSize))
    7572        return false;
    76     if (!decoder.decode(parameters.isActive))
    77         return false;
    78     if (!decoder.decode(parameters.isFocused))
    79         return false;
    80     if (!decoder.decode(parameters.isVisible))
    81         return false;
    82     if (!decoder.decode(parameters.isInWindow))
     73    if (!decoder.decode(parameters.viewState))
    8374        return false;
    8475    if (!decoder.decode(parameters.store))
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.h

    r158210 r158372  
    3030#include "LayerTreeContext.h"
    3131#include "SessionState.h"
     32#include "ViewState.h"
    3233#include "WebCoreArgumentCoders.h"
    3334#include "WebPageGroupData.h"
     
    5657    WebCore::IntSize viewSize;
    5758
    58     bool isActive;
    59     bool isFocused;
    60     bool isVisible;
    61     bool isInWindow;
     59    ViewState::Flags viewState;
    6260   
    6361    WebPreferencesStore store;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r158369 r158372  
    239239    , m_notificationPermissionRequestManager(this)
    240240    , m_estimatedProgress(0)
    241     , m_isInWindow(m_pageClient->isViewInWindow())
    242     , m_isVisible(m_pageClient->isViewVisible())
     241    , m_viewState(ViewState::NoFlags)
    243242    , m_backForwardList(WebBackForwardList::create(this))
    244243    , m_loadStateAtProcessExit(WebFrameProxy::LoadStateFinished)
     
    320319    , m_scrollPinningBehavior(DoNotPin)
    321320{
     321    updateViewState();
     322
    322323    platformInitialize();
    323324
    324325#if ENABLE(PAGE_VISIBILITY_API)
    325     if (!m_isVisible)
     326    if (isViewVisible())
    326327        m_visibilityState = PageVisibilityStateHidden;
    327328#endif
     
    471472    ASSERT(!m_process->isLaunching());
    472473
     474    updateViewState();
     475
    473476    m_isValid = true;
    474477
     
    529532    m_process->send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID);
    530533#elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING)
    531     m_process->send(Messages::WebPage::SetVisibilityState(m_isVisible ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);
     534    m_process->send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);
    532535#endif
    533536
     
    966969}
    967970
     971void WebPageProxy::updateViewState(ViewState::Flags flagsToUpdate)
     972{
     973    m_viewState &= ~flagsToUpdate;
     974    if (flagsToUpdate & ViewState::WindowIsVisible && m_pageClient->isWindowVisible())
     975        m_viewState |= ViewState::WindowIsVisible;
     976    if (flagsToUpdate & ViewState::IsFocused && m_pageClient->isViewFocused())
     977        m_viewState |= ViewState::IsFocused;
     978    if (flagsToUpdate & ViewState::WindowIsActive && m_pageClient->isViewWindowActive())
     979        m_viewState |= ViewState::WindowIsActive;
     980    if (flagsToUpdate & ViewState::IsVisible && m_pageClient->isViewVisible())
     981        m_viewState |= ViewState::IsVisible;
     982    if (flagsToUpdate & ViewState::IsInWindow && m_pageClient->isViewInWindow())
     983        m_viewState |= ViewState::IsInWindow;
     984}
     985
    968986void WebPageProxy::viewStateDidChange(ViewState::Flags mayHaveChanged, WantsReplyOrNot wantsReply)
    969987{
    970     // Wants reply currently only applies to the IsInWindow flag, so check only this is set.
    971     ASSERT(wantsReply == WantsReplyOrNot::DoesNotWantReply || mayHaveChanged == ViewState::IsInWindow);
    972 
    973     if (!isValid())
    974         return;
    975 
    976     if (mayHaveChanged & ViewState::WindowIsVisible)
    977         process()->send(Messages::WebPage::SetWindowIsVisible(m_pageClient->isWindowVisible()), m_pageID);
    978 
    979     if (mayHaveChanged & ViewState::IsFocused)
    980         m_process->send(Messages::WebPage::SetFocused(m_pageClient->isViewFocused()), m_pageID);
    981 
    982     // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state
    983     // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides).
    984     bool viewWasVisible = m_isVisible;
    985    
    986     if (mayHaveChanged & ViewState::WindowIsActive && !viewWasVisible)
    987         m_process->send(Messages::WebPage::SetActive(m_pageClient->isViewWindowActive()), m_pageID);
    988 
    989     if (mayHaveChanged & ViewState::IsVisible) {
    990         bool isVisible = m_pageClient->isViewVisible();
    991         if (isVisible != m_isVisible) {
    992             m_isVisible = isVisible;
    993             m_process->pageVisibilityChanged(this);
    994             m_process->send(Messages::WebPage::SetViewIsVisible(isVisible), m_pageID);
    995 
    996             if (!m_isVisible) {
    997                 // If we've started the responsiveness timer as part of telling the web process to update the backing store
    998                 // state, it might not send back a reply (since it won't paint anything if the web page is hidden) so we
    999                 // stop the unresponsiveness timer here.
    1000                 m_process->responsivenessTimer()->stop();
    1001             }
    1002 
    1003 #if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) && !ENABLE(PAGE_VISIBILITY_API)
    1004             PageVisibilityState visibilityState = m_isVisible ? PageVisibilityStateVisible : PageVisibilityStateHidden;
    1005             m_process->send(Messages::WebPage::SetVisibilityState(visibilityState, false), m_pageID);
    1006 #endif
     988    if (!isValid())
     989        return;
     990
     991    // Record the prior view state, update the flags that may have changed,
     992    // and check which flags have actually changed.
     993    ViewState::Flags previousViewState = m_viewState;
     994    updateViewState(mayHaveChanged);
     995    ViewState::Flags changed = m_viewState ^ previousViewState;
     996
     997    if (changed)
     998        m_process->send(Messages::WebPage::SetViewState(m_viewState, wantsReply == WantsReplyOrNot::DoesWantReply), m_pageID);
     999
     1000    if (changed & ViewState::IsVisible) {
     1001        m_process->pageVisibilityChanged(this);
     1002
     1003        if (!isViewVisible()) {
     1004            // If we've started the responsiveness timer as part of telling the web process to update the backing store
     1005            // state, it might not send back a reply (since it won't paint anything if the web page is hidden) so we
     1006            // stop the unresponsiveness timer here.
     1007            m_process->responsivenessTimer()->stop();
    10071008        }
    1008     }
    1009 
    1010     if (mayHaveChanged & ViewState::WindowIsActive && viewWasVisible)
    1011         m_process->send(Messages::WebPage::SetActive(m_pageClient->isViewWindowActive()), m_pageID);
     1009
     1010#if ENABLE(PAGE_VISIBILITY_API)
     1011        m_visibilityState = isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden;
     1012        m_process->send(Messages::WebPage::SetVisibilityState(m_visibilityState, false), m_pageID);
     1013#elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING)
     1014        PageVisibilityState visibilityState = isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden;
     1015        m_process->send(Messages::WebPage::SetVisibilityState(visibilityState, false), m_pageID);
     1016#endif
     1017    }
    10121018
    10131019    if (mayHaveChanged & ViewState::IsInWindow) {
    1014         bool isInWindow = m_pageClient->isViewInWindow();
    1015         if (m_isInWindow != isInWindow) {
    1016             m_isInWindow = isInWindow;
    1017             m_process->send(Messages::WebPage::SetIsInWindow(isInWindow, wantsReply == WantsReplyOrNot::DoesWantReply), m_pageID);
    1018         }
    1019 
    1020         if (isInWindow) {
     1020        if (m_viewState & ViewState::IsInWindow) {
    10211021            LayerHostingMode layerHostingMode = m_pageClient->viewLayerHostingMode();
    10221022            if (m_layerHostingMode != layerHostingMode) {
     
    10331033#endif
    10341034    }
    1035 
    1036 #if ENABLE(PAGE_VISIBILITY_API)
    1037     PageVisibilityState visibilityState = PageVisibilityStateHidden;
    1038 
    1039     if (m_isVisible)
    1040         visibilityState = PageVisibilityStateVisible;
    1041 
    1042     if (visibilityState != m_visibilityState) {
    1043         m_visibilityState = visibilityState;
    1044         m_process->send(Messages::WebPage::SetVisibilityState(visibilityState, false), m_pageID);
    1045     }
    1046 #endif
    10471035
    10481036    updateBackingStoreDiscardableState();
     
    38373825{
    38383826    m_creationParameters.viewSize = m_pageClient->viewSize();
    3839     m_creationParameters.isActive = m_pageClient->isViewWindowActive();
    3840     m_creationParameters.isFocused = m_pageClient->isViewFocused();
    3841     m_creationParameters.isVisible = m_pageClient->isViewVisible();
    3842     m_creationParameters.isInWindow = m_pageClient->isViewInWindow();
     3827    m_creationParameters.viewState = m_viewState;
    38433828    m_creationParameters.drawingAreaType = m_drawingArea->type();
    38443829    m_creationParameters.store = m_pageGroup->preferences()->store();
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r158369 r158372  
    327327    enum class WantsReplyOrNot { DoesNotWantReply, DoesWantReply };
    328328    void viewStateDidChange(ViewState::Flags mayHaveChanged, WantsReplyOrNot = WantsReplyOrNot::DoesNotWantReply);
    329     bool isInWindow() const { return m_isInWindow; }
     329    bool isInWindow() const { return m_viewState & ViewState::IsInWindow; }
    330330    void waitForDidUpdateInWindowState();
    331331
    332332    WebCore::IntSize viewSize() const;
    333     bool isViewVisible() const { return m_isVisible; }
     333    bool isViewVisible() const { return m_viewState & ViewState::IsVisible; }
    334334    bool isViewWindowActive() const;
    335335
     
    756756    void platformInitialize();
    757757    void initializeCreationParameters();
     758
     759    void updateViewState(ViewState::Flags flagsToUpdate = ViewState::AllFlags);
    758760
    759761    void resetState();
     
    10891091    double m_estimatedProgress;
    10901092
    1091     // Whether the web page is contained in a top-level window.
    1092     bool m_isInWindow;
    1093 
    1094     // Whether the page is visible; if the backing view is visible and inserted into a window.
    1095     bool m_isVisible;
     1093    ViewState::Flags m_viewState;
    10961094
    10971095    bool m_canGoBack;
  • trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp

    r156861 r158372  
    6161    , m_layerTreeStateIsFrozen(false)
    6262    , m_wantsToExitAcceleratedCompositingMode(false)
    63     , m_isPaintingSuspended(!parameters.isVisible)
     63    , m_isPaintingSuspended(!(parameters.viewState & ViewState::IsVisible))
    6464    , m_displayTimer(RunLoop::main(), this, &CoordinatedDrawingArea::displayTimerFired)
    6565    , m_exitCompositingTimer(RunLoop::main(), this, &CoordinatedDrawingArea::exitAcceleratedCompositingMode)
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp

    r158013 r158372  
    5858    , m_layerTreeStateIsFrozen(false)
    5959    , m_wantsToExitAcceleratedCompositingMode(false)
    60     , m_isPaintingSuspended(!parameters.isVisible)
     60    , m_isPaintingSuspended(!(parameters.viewState & ViewState::IsVisible))
    6161    , m_alwaysUseCompositing(false)
    6262    , m_displayTimer(RunLoop::main(), this, &DrawingAreaImpl::displayTimerFired)
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r158360 r158372  
    282282    , m_scrollPinningBehavior(DoNotPin)
    283283    , m_useThreadedScrolling(false)
     284    , m_viewState(parameters.viewState)
    284285{
    285286    ASSERT(m_pageID);
     
    365366    setMemoryCacheMessagesEnabled(parameters.areMemoryCacheClientCallsEnabled);
    366367
    367     setActive(parameters.isActive);
    368     setFocused(parameters.isFocused);
     368    setActive(parameters.viewState & ViewState::WindowIsActive);
     369    setFocused(parameters.viewState & ViewState::IsFocused);
    369370
    370371    // Page defaults to in-window, but setIsInWindow depends on it being a valid indicator of actually having been put into a window.
    371     if (!parameters.isInWindow)
     372    bool isInWindow = parameters.viewState & ViewState::IsInWindow;
     373    if (!isInWindow)
    372374        m_page->setIsInWindow(false);
    373375    else
    374376        WebProcess::shared().pageDidEnterWindow(m_pageID);
    375377
    376     setIsInWindow(parameters.isInWindow);
     378    setIsInWindow(isInWindow);
    377379
    378380    setMinimumLayoutSize(parameters.minimumLayoutSize);
     
    19841986}
    19851987
    1986 void WebPage::setIsInWindow(bool isInWindow, bool wantsDidUpdateViewInWindowState)
     1988void WebPage::setIsInWindow(bool isInWindow)
    19871989{
    19881990    bool pageWasInWindow = m_page->isInWindow();
     
    20122014    if (isInWindow)
    20132015        layoutIfNeeded();
    2014 
    2015     if (wantsDidUpdateViewInWindowState)
     2016}
     2017
     2018void WebPage::setViewState(ViewState::Flags viewState, bool wantsDidUpdateInWindowState)
     2019{
     2020    ViewState::Flags changed = m_viewState ^ viewState;
     2021
     2022    // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state
     2023    // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides).
     2024    if (changed & ViewState::WindowIsVisible)
     2025        setWindowIsVisible(viewState & ViewState::WindowIsVisible);
     2026    if (changed & ViewState::IsFocused)
     2027        setFocused(viewState & ViewState::IsFocused);
     2028    if (changed & ViewState::WindowIsActive && !(m_viewState & ViewState::IsVisible))
     2029        setActive(viewState & ViewState::WindowIsActive);
     2030    if (changed & ViewState::IsVisible)
     2031        setViewIsVisible(viewState & ViewState::IsVisible);
     2032    if (changed & ViewState::WindowIsActive && m_viewState & ViewState::IsVisible)
     2033        setActive(viewState & ViewState::WindowIsActive);
     2034    if (changed & ViewState::IsInWindow)
     2035        setIsInWindow(viewState & ViewState::IsInWindow);
     2036
     2037    m_viewState = viewState;
     2038
     2039    if (wantsDidUpdateInWindowState)
    20162040        m_sendDidUpdateInWindowStateTimer.startOneShot(0);
    20172041}
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r157996 r158372  
    5050#include "SandboxExtension.h"
    5151#include "ShareableBitmap.h"
     52#include "ViewState.h"
    5253#include "WebUndoStep.h"
    5354#include <WebCore/DictationAlternative.h>
     
    684685    void setInitialFocus(bool forward, bool isKeyboardEventValid, const WebKeyboardEvent&);
    685686    void setWindowResizerSize(const WebCore::IntSize&);
    686     void setIsInWindow(bool isInWindow, bool wantsDidUpdateViewInWindowState = false);
     687    void setIsInWindow(bool);
     688    void setViewState(ViewState::Flags, bool wantsDidUpdateInWindowState);
    687689    void validateCommand(const String&, uint64_t);
    688690    void executeEditCommand(const String&);
     
    992994
    993995    bool m_useThreadedScrolling;
     996
     997    ViewState::Flags m_viewState;
    994998};
    995999
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r157996 r158372  
    2222
    2323messages -> WebPage LegacyReceiver {
    24     SetActive(bool active)
    25     SetFocused(bool focused)
    26     SetViewIsVisible(bool visible)
    2724    SetInitialFocus(bool forward, bool isKeyboardEventValid, WebKit::WebKeyboardEvent event)
    28     SetIsInWindow(bool isInWindow, bool wantsDidUpdateViewInWindowState)
     25    SetViewState(unsigned viewState, bool wantsDidUpdateInWindowState)
    2926
    3027    SetDrawsBackground(bool drawsBackground)
     
    245242    CancelComposition()
    246243#endif
    247 
    248     SetWindowIsVisible(bool windowIsVisible)
    249244
    250245#if PLATFORM(MAC)
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm

    r158122 r158372  
    6565    , m_layerTreeStateIsFrozen(false)
    6666    , m_layerFlushScheduler(this)
    67     , m_isPaintingSuspended(!parameters.isVisible)
     67    , m_isPaintingSuspended(!(parameters.viewState & ViewState::IsVisible))
    6868    , m_clipsToExposedRect(false)
    6969    , m_updateIntrinsicContentSizeTimer(this, &TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeTimerFired)
Note: See TracChangeset for help on using the changeset viewer.