Title: [155066] trunk/Source/WebKit2
Revision
155066
Author
[email protected]
Date
2013-09-04 14:59:27 -0700 (Wed, 04 Sep 2013)

Log Message

[WK2][GTK] ASSERTION in WebKit::LayerTreeHostGtk::invalidate
https://bugs.webkit.org/show_bug.cgi?id=117733

Reviewed by Martin Robinson.

If the GL context cannot be created then an invalid
LayerTreeHostGtk object will be returned.

This patch disables accelerated compositing if the system doesn't
support it.

* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewUpdateSettings):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseUpdatePreferences):
(webkitWebViewBaseCreateWebPage):
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (155065 => 155066)


--- trunk/Source/WebKit2/ChangeLog	2013-09-04 21:35:56 UTC (rev 155065)
+++ trunk/Source/WebKit2/ChangeLog	2013-09-04 21:59:27 UTC (rev 155066)
@@ -1,3 +1,23 @@
+2013-09-04  Alberto Garcia  <[email protected]>
+
+        [WK2][GTK] ASSERTION in WebKit::LayerTreeHostGtk::invalidate
+        https://bugs.webkit.org/show_bug.cgi?id=117733
+
+        Reviewed by Martin Robinson.
+
+        If the GL context cannot be created then an invalid
+        LayerTreeHostGtk object will be returned.
+
+        This patch disables accelerated compositing if the system doesn't
+        support it.
+
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkitWebViewUpdateSettings):
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseUpdatePreferences):
+        (webkitWebViewBaseCreateWebPage):
+        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+
 2013-09-04  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r154989.

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (155065 => 155066)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2013-09-04 21:35:56 UTC (rev 155065)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2013-09-04 21:59:27 UTC (rev 155066)
@@ -379,6 +379,8 @@
     page->setCanRunModal(webkit_settings_get_allow_modal_dialogs(settings));
     page->setCustomUserAgent(String::fromUTF8(webkit_settings_get_user_agent(settings)));
 
+    webkitWebViewBaseUpdatePreferences(WEBKIT_WEB_VIEW_BASE(webView));
+
     g_signal_connect(settings, "notify::allow-modal-dialogs", G_CALLBACK(allowModalDialogsChanged), webView);
     g_signal_connect(settings, "notify::zoom-text-only", G_CALLBACK(zoomTextOnlyChanged), webView);
     g_signal_connect(settings, "notify::user-agent", G_CALLBACK(userAgentChanged), webView);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp (155065 => 155066)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2013-09-04 21:35:56 UTC (rev 155065)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2013-09-04 21:59:27 UTC (rev 155066)
@@ -40,7 +40,9 @@
 #include "WebKitPrivate.h"
 #include "WebKitWebViewBaseAccessible.h"
 #include "WebKitWebViewBasePrivate.h"
+#include "WebPageGroup.h"
 #include "WebPageProxy.h"
+#include "WebPreferences.h"
 #include "WebViewBaseInputMethodFilter.h"
 #include <WebCore/ClipboardUtilitiesGtk.h>
 #include <WebCore/DataObjectGtk.h>
@@ -892,6 +894,16 @@
     return webkitWebViewBase->priv->pageProxy.get();
 }
 
+void webkitWebViewBaseUpdatePreferences(WebKitWebViewBase* webkitWebViewBase)
+{
+#if USE(TEXTURE_MAPPER_GL)
+    WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
+
+    if (!priv->redirectedWindow)
+        priv->pageProxy->pageGroup()->preferences()->setAcceleratedCompositingEnabled(false);
+#endif
+}
+
 void webkitWebViewBaseCreateWebPage(WebKitWebViewBase* webkitWebViewBase, WebContext* context, WebPageGroup* pageGroup)
 {
     WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
@@ -908,6 +920,8 @@
         priv->pageProxy->setAcceleratedCompositingWindowId(priv->redirectedWindow->windowId());
 #endif
 
+    webkitWebViewBaseUpdatePreferences(webkitWebViewBase);
+
     // This must happen here instead of the instance initializer, because the input method
     // filter must have access to the page.
     priv->inputMethodFilter.setWebView(webkitWebViewBase);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (155065 => 155066)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h	2013-09-04 21:35:56 UTC (rev 155065)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h	2013-09-04 21:59:27 UTC (rev 155066)
@@ -51,6 +51,7 @@
 GdkEvent* webkitWebViewBaseTakeContextMenuEvent(WebKitWebViewBase*);
 void webkitWebViewBaseSetInputMethodState(WebKitWebViewBase*, bool enabled);
 void webkitWebViewBaseUpdateTextInputState(WebKitWebViewBase*);
+void webkitWebViewBaseUpdatePreferences(WebKitWebViewBase*);
 
 #if USE(TEXTURE_MAPPER_GL)
 void webkitWebViewBaseQueueDrawOfAcceleratedCompositingResults(WebKitWebViewBase*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to