Title: [229263] releases/WebKitGTK/webkit-2.20/Source/WebKit
Revision
229263
Author
[email protected]
Date
2018-03-05 05:15:55 -0800 (Mon, 05 Mar 2018)

Log Message

Merge r229126 - REGRESSION(r221514): [GTK] UI process crash in WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks
https://bugs.webkit.org/show_bug.cgi?id=183091

Reviewed by Michael Catanzaro.

Invalidate the surface in the page map when the backing store is destroyed.

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::willDestroySurface):
* UIProcess/gtk/WaylandCompositor.h:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog (229262 => 229263)


--- releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog	2018-03-05 12:34:36 UTC (rev 229262)
+++ releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog	2018-03-05 13:15:55 UTC (rev 229263)
@@ -1,3 +1,16 @@
+2018-03-01  Carlos Garcia Campos  <[email protected]>
+
+        REGRESSION(r221514): [GTK] UI process crash in WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks
+        https://bugs.webkit.org/show_bug.cgi?id=183091
+
+        Reviewed by Michael Catanzaro.
+
+        Invalidate the surface in the page map when the backing store is destroyed.
+
+        * UIProcess/gtk/WaylandCompositor.cpp:
+        (WebKit::WaylandCompositor::willDestroySurface):
+        * UIProcess/gtk/WaylandCompositor.h:
+
 2018-02-26  Youenn Fablet  <[email protected]>
 
         MessagePort is not always destroyed in the right thread

Modified: releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp (229262 => 229263)


--- releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp	2018-03-05 12:34:36 UTC (rev 229262)
+++ releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp	2018-03-05 13:15:55 UTC (rev 229263)
@@ -350,6 +350,7 @@
             wl_resource_set_implementation(surfaceResource, &surfaceInterface, new WaylandCompositor::Surface(),
                 [](struct wl_resource* resource) {
                     auto* surface = static_cast<WaylandCompositor::Surface*>(wl_resource_get_user_data(resource));
+                    WaylandCompositor::singleton().willDestroySurface(surface);
                     delete surface;
                 });
         } else
@@ -562,6 +563,16 @@
         surface->setWebPage(nullptr);
 }
 
+void WaylandCompositor::willDestroySurface(Surface* surface)
+{
+    for (auto it : m_pageMap) {
+        if (it.value == surface) {
+            it.value = nullptr;
+            return;
+        }
+    }
+}
+
 } // namespace WebKit
 
 #endif // PLATFORM(WAYLAND) && USE(EGL)

Modified: releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.h (229262 => 229263)


--- releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.h	2018-03-05 12:34:36 UTC (rev 229262)
+++ releases/WebKitGTK/webkit-2.20/Source/WebKit/UIProcess/gtk/WaylandCompositor.h	2018-03-05 13:15:55 UTC (rev 229263)
@@ -113,6 +113,7 @@
     void bindSurfaceToWebPage(Surface*, uint64_t pageID);
     void registerWebPage(WebPageProxy&);
     void unregisterWebPage(WebPageProxy&);
+    void willDestroySurface(Surface*);
 
     bool getTexture(WebPageProxy&, unsigned&, WebCore::IntSize&);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to