Title: [178415] trunk/Source/WebKit2
Revision
178415
Author
[email protected]
Date
2015-01-14 01:03:36 -0800 (Wed, 14 Jan 2015)

Log Message

[GTK] Do not schedule a redraw for the redirected XComposite window when not in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=140354

Reviewed by Martin Robinson.

The RedirectedXCompositeWindow uses XDamage to be notified when
the XWindow has been modified. Since the redirected window is
created unconditionally we always receive a XDamage notify when
the window is mapped, and we schedule a redraw in the web view
even when the web view is not in accelerated compositing mode.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseRealize): Only call gtk_widget_queue_draw() when
in accelerated compositing mode.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (178414 => 178415)


--- trunk/Source/WebKit2/ChangeLog	2015-01-14 09:00:14 UTC (rev 178414)
+++ trunk/Source/WebKit2/ChangeLog	2015-01-14 09:03:36 UTC (rev 178415)
@@ -1,3 +1,20 @@
+2015-01-12  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] Do not schedule a redraw for the redirected XComposite window when not in accelerated compositing mode
+        https://bugs.webkit.org/show_bug.cgi?id=140354
+
+        Reviewed by Martin Robinson.
+
+        The RedirectedXCompositeWindow uses XDamage to be notified when
+        the XWindow has been modified. Since the redirected window is
+        created unconditionally we always receive a XDamage notify when
+        the window is mapped, and we schedule a redraw in the web view
+        even when the web view is not in accelerated compositing mode.
+
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseRealize): Only call gtk_widget_queue_draw() when
+        in accelerated compositing mode.
+
 2015-01-14  Carlos Garcia Campos  <[email protected]>
 
         [GTK] Do not resize the redirected XComposite window when not in accelerated compositing mode

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2015-01-14 09:00:14 UTC (rev 178414)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2015-01-14 09:03:36 UTC (rev 178415)
@@ -311,20 +311,24 @@
 
 static void webkitWebViewBaseRealize(GtkWidget* widget)
 {
+    WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(widget);
+    WebKitWebViewBasePrivate* priv = webView->priv;
+
 #if USE(TEXTURE_MAPPER_GL) && PLATFORM(X11)
     GdkDisplay* display = gdk_display_manager_get_default_display(gdk_display_manager_get());
     if (GDK_IS_X11_DISPLAY(display)) {
-        WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
         priv->redirectedWindow = RedirectedXCompositeWindow::create(
             gtk_widget_get_parent_window(widget),
-            [widget] {
-                gtk_widget_queue_draw(widget);
+            [webView] {
+                DrawingAreaProxyImpl* drawingArea = static_cast<DrawingAreaProxyImpl*>(webView->priv->pageProxy->drawingArea());
+                if (drawingArea && drawingArea->isInAcceleratedCompositingMode())
+                    gtk_widget_queue_draw(GTK_WIDGET(webView));
             });
         if (priv->redirectedWindow) {
             DrawingAreaProxyImpl* drawingArea = static_cast<DrawingAreaProxyImpl*>(priv->pageProxy->drawingArea());
             drawingArea->setNativeSurfaceHandleForCompositing(priv->redirectedWindow->windowID());
         }
-        webkitWebViewBaseUpdatePreferences(WEBKIT_WEB_VIEW_BASE(widget));
+        webkitWebViewBaseUpdatePreferences(webView);
     }
 #endif
 
@@ -364,8 +368,7 @@
 
     gtk_style_context_set_background(gtk_widget_get_style_context(widget), window);
 
-    WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(widget);
-    gtk_im_context_set_client_window(webView->priv->inputMethodFilter.context(), window);
+    gtk_im_context_set_client_window(priv->inputMethodFilter.context(), window);
 
     GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
     if (widgetIsOnscreenToplevelWindow(toplevel))
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to