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