Title: [122056] trunk/Source/WebKit/blackberry
Revision
122056
Author
[email protected]
Date
2012-07-07 15:26:33 -0700 (Sat, 07 Jul 2012)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (122055 => 122056)


--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-07-07 20:53:01 UTC (rev 122055)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-07-07 22:26:33 UTC (rev 122056)
@@ -6176,7 +6176,7 @@
 {
     // m_compositor is a RefPtr, so it may live on beyond this point.
     // Disconnect the compositor from us
-    m_compositor->setPage(0);
+    m_compositor->detach();
     m_compositor.clear();
     m_ownedContext.clear();
 }

Modified: trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp (122055 => 122056)


--- trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp	2012-07-07 20:53:01 UTC (rev 122055)
+++ trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp	2012-07-07 22:26:33 UTC (rev 122056)
@@ -47,14 +47,31 @@
     , m_webPage(page)
     , m_drawsRootLayer(false)
 {
+    ASSERT(m_webPage);
     setOneShot(true); // one-shot animation client
 }
 
 WebPageCompositorPrivate::~WebPageCompositorPrivate()
 {
-    Platform::AnimationFrameRateController::instance()->removeClient(this);
+    detach();
 }
 
+void WebPageCompositorPrivate::detach()
+{
+    if (m_webPage)
+        Platform::AnimationFrameRateController::instance()->removeClient(this);
+    m_webPage = 0;
+}
+
+void WebPageCompositorPrivate::setPage(WebPagePrivate *p)
+{
+    if (p == m_webPage)
+        return;
+    ASSERT(p);
+    ASSERT(m_webPage); // if this is null, we have a bug and we need to re-add.
+    m_webPage = p;
+}
+
 void WebPageCompositorPrivate::setContext(Platform::Graphics::GLES2Context* context)
 {
     if (m_context == context)

Modified: trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h (122055 => 122056)


--- trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h	2012-07-07 20:53:01 UTC (rev 122055)
+++ trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h	2012-07-07 22:26:33 UTC (rev 122056)
@@ -90,7 +90,8 @@
     void releaseLayerResources();
 
     WebPagePrivate* page() const { return m_webPage; }
-    void setPage(WebPagePrivate* page) { m_webPage = page; }
+    void setPage(WebPagePrivate* page);
+    void detach();
     WebPageCompositorClient* client() const { return m_client; }
     void compositorDestroyed();
 

Modified: trunk/Source/WebKit/blackberry/ChangeLog (122055 => 122056)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-07-07 20:53:01 UTC (rev 122055)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-07-07 22:26:33 UTC (rev 122056)
@@ -1,3 +1,21 @@
+2012-07-07  George Staikos  <[email protected]>
+
+        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):
+
 2012-07-06  Max Feil  <[email protected]>
 
         [BlackBerry] exitFullScreenForElement() is not working for fullscreen elements in iframes
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to