Changeset 122056 in webkit


Ignore:
Timestamp:
Jul 7, 2012 3:26:33 PM (12 years ago)
Author:
staikos@webkit.org
Message:

Detach animation clients properly if we clear the web page pointer.
https://bugs.webkit.org/show_bug.cgi?id=90730

Reviewed by Adam Treat.

  • Api/WebPage.cpp:

(BlackBerry::WebKit::WebPagePrivate::destroyCompositor):

  • Api/WebPageCompositor.cpp:

(BlackBerry::WebKit::WebPageCompositorPrivate::WebPageCompositorPrivate):
(BlackBerry::WebKit::WebPageCompositorPrivate::~WebPageCompositorPrivate):
(WebKit):
(BlackBerry::WebKit::WebPageCompositorPrivate::detach):
(BlackBerry::WebKit::WebPageCompositorPrivate::setPage):

  • Api/WebPageCompositor_p.h:

(WebPageCompositorPrivate):

Location:
trunk/Source/WebKit/blackberry
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/blackberry/Api/WebPage.cpp

    r122034 r122056  
    61776177    // m_compositor is a RefPtr, so it may live on beyond this point.
    61786178    // Disconnect the compositor from us
    6179     m_compositor->setPage(0);
     6179    m_compositor->detach();
    61806180    m_compositor.clear();
    61816181    m_ownedContext.clear();
  • trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp

    r120134 r122056  
    4848    , m_drawsRootLayer(false)
    4949{
     50    ASSERT(m_webPage);
    5051    setOneShot(true); // one-shot animation client
    5152}
     
    5354WebPageCompositorPrivate::~WebPageCompositorPrivate()
    5455{
    55     Platform::AnimationFrameRateController::instance()->removeClient(this);
     56    detach();
     57}
     58
     59void WebPageCompositorPrivate::detach()
     60{
     61    if (m_webPage)
     62        Platform::AnimationFrameRateController::instance()->removeClient(this);
     63    m_webPage = 0;
     64}
     65
     66void WebPageCompositorPrivate::setPage(WebPagePrivate *p)
     67{
     68    if (p == m_webPage)
     69        return;
     70    ASSERT(p);
     71    ASSERT(m_webPage); // if this is null, we have a bug and we need to re-add.
     72    m_webPage = p;
    5673}
    5774
  • trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h

    r119718 r122056  
    9191
    9292    WebPagePrivate* page() const { return m_webPage; }
    93     void setPage(WebPagePrivate* page) { m_webPage = page; }
     93    void setPage(WebPagePrivate* page);
     94    void detach();
    9495    WebPageCompositorClient* client() const { return m_client; }
    9596    void compositorDestroyed();
  • trunk/Source/WebKit/blackberry/ChangeLog

    r122035 r122056  
     12012-07-07  George Staikos  <staikos@webkit.org>
     2
     3        Detach animation clients properly if we clear the web page pointer.
     4        https://bugs.webkit.org/show_bug.cgi?id=90730
     5
     6        Reviewed by Adam Treat.
     7
     8        * Api/WebPage.cpp:
     9        (BlackBerry::WebKit::WebPagePrivate::destroyCompositor):
     10        * Api/WebPageCompositor.cpp:
     11        (BlackBerry::WebKit::WebPageCompositorPrivate::WebPageCompositorPrivate):
     12        (BlackBerry::WebKit::WebPageCompositorPrivate::~WebPageCompositorPrivate):
     13        (WebKit):
     14        (BlackBerry::WebKit::WebPageCompositorPrivate::detach):
     15        (BlackBerry::WebKit::WebPageCompositorPrivate::setPage):
     16        * Api/WebPageCompositor_p.h:
     17        (WebPageCompositorPrivate):
     18
    1192012-07-06  Max Feil  <mfeil@rim.com>
    220
Note: See TracChangeset for help on using the changeset viewer.