Title: [188208] trunk/Source/WebKit2
Revision
188208
Author
carlo...@webkit.org
Date
2015-08-10 01:27:52 -0700 (Mon, 10 Aug 2015)

Log Message

[GTK] Crash when the web view is destroyed while the screensaver DBUs proxy is being created
https://bugs.webkit.org/show_bug.cgi?id=147780

Reviewed by Sergio Villar Senin.

We should cancel the screenSaverInhibitCancellable on
dispose. Also use adoptGRef() when creating the cancellable object
to not leak it.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseDispose):
(webkitWebViewBaseSendInhibitMessageToScreenSaver):
(webkitWebViewBaseInhibitScreenSaver):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (188207 => 188208)


--- trunk/Source/WebKit2/ChangeLog	2015-08-10 08:24:59 UTC (rev 188207)
+++ trunk/Source/WebKit2/ChangeLog	2015-08-10 08:27:52 UTC (rev 188208)
@@ -1,3 +1,19 @@
+2015-08-10  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GTK] Crash when the web view is destroyed while the screensaver DBUs proxy is being created
+        https://bugs.webkit.org/show_bug.cgi?id=147780
+
+        Reviewed by Sergio Villar Senin.
+
+        We should cancel the screenSaverInhibitCancellable on
+        dispose. Also use adoptGRef() when creating the cancellable object
+        to not leak it.
+
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseDispose):
+        (webkitWebViewBaseSendInhibitMessageToScreenSaver):
+        (webkitWebViewBaseInhibitScreenSaver):
+
 2015-08-09  Chris Dumez  <cdu...@apple.com>
 
         Follow-up nit fixes after r187691.

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2015-08-10 08:24:59 UTC (rev 188207)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp	2015-08-10 08:27:52 UTC (rev 188208)
@@ -450,6 +450,7 @@
 static void webkitWebViewBaseDispose(GObject* gobject)
 {
     WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(gobject);
+    g_cancellable_cancel(webView->priv->screenSaverInhibitCancellable.get());
     webkitWebViewBaseSetToplevelOnScreenWindow(webView, nullptr);
     webView->priv->pageProxy->close();
     G_OBJECT_CLASS(webkit_web_view_base_parent_class)->dispose(gobject);
@@ -1134,7 +1135,7 @@
     ASSERT(priv->screenSaverProxy);
     priv->screenSaverCookie = 0;
     if (!priv->screenSaverInhibitCancellable)
-        priv->screenSaverInhibitCancellable = g_cancellable_new();
+        priv->screenSaverInhibitCancellable = adoptGRef(g_cancellable_new());
     g_dbus_proxy_call(priv->screenSaverProxy.get(), "Inhibit", g_variant_new("(ss)", g_get_prgname(), _("Website running in fullscreen mode")),
         G_DBUS_CALL_FLAGS_NONE, -1, priv->screenSaverInhibitCancellable.get(), reinterpret_cast<GAsyncReadyCallback>(screenSaverInhibitedCallback), webViewBase);
 }
@@ -1162,7 +1163,7 @@
         return;
     }
 
-    priv->screenSaverInhibitCancellable = g_cancellable_new();
+    priv->screenSaverInhibitCancellable = adoptGRef(g_cancellable_new());
     g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, static_cast<GDBusProxyFlags>(G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS),
         nullptr, "org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", priv->screenSaverInhibitCancellable.get(),
         reinterpret_cast<GAsyncReadyCallback>(screenSaverProxyCreatedCallback), webViewBase);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to