Title: [231429] releases/WebKitGTK/webkit-2.20/Source/WebKit
Revision
231429
Author
[email protected]
Date
2018-05-07 02:29:45 -0700 (Mon, 07 May 2018)

Log Message

Merge r231132 - [GTK] WebProcess from WebKitGtk+ 2.19.92 SIGSEVs in WebCore::TextureMapperGL::~TextureMapperGL
https://bugs.webkit.org/show_bug.cgi?id=184040

Reviewed by Michael Catanzaro.

This can happen when using single shared process model or when the process limit is reached in multiple process
model. In this case, all pages in the same web process with accelerated compositing enabled share the same
compositing thread. Every page sets its GL context as current when rendering a frame, but not when invalidating
the threaded compositor when the page is closed. So, if a hidden tab is closed, the threaded compositor is
invalidated and the GL resources of the current context (the visible page) are destroyed. This is also causing
the blank pages issue when closing a tab related to another one, the current one stops rendering anything because
its GL context has been released. We should make the threaded compositor context current when invalidating it.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::invalidate):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog (231428 => 231429)


--- releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog	2018-05-07 09:29:41 UTC (rev 231428)
+++ releases/WebKitGTK/webkit-2.20/Source/WebKit/ChangeLog	2018-05-07 09:29:45 UTC (rev 231429)
@@ -1,3 +1,21 @@
+2018-04-28  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] WebProcess from WebKitGtk+ 2.19.92 SIGSEVs in WebCore::TextureMapperGL::~TextureMapperGL
+        https://bugs.webkit.org/show_bug.cgi?id=184040
+
+        Reviewed by Michael Catanzaro.
+
+        This can happen when using single shared process model or when the process limit is reached in multiple process
+        model. In this case, all pages in the same web process with accelerated compositing enabled share the same
+        compositing thread. Every page sets its GL context as current when rendering a frame, but not when invalidating
+        the threaded compositor when the page is closed. So, if a hidden tab is closed, the threaded compositor is
+        invalidated and the GL resources of the current context (the visible page) are destroyed. This is also causing
+        the blank pages issue when closing a tab related to another one, the current one stops rendering anything because
+        its GL context has been released. We should make the threaded compositor context current when invalidating it.
+
+        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
+        (WebKit::ThreadedCompositor::invalidate):
+
 2018-04-24  Zan Dobersek  <[email protected]>
 
         REGRESSION(r230950): Faulty commit sequencing in CoordinatedGraphicsScene

Modified: releases/WebKitGTK/webkit-2.20/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp (231428 => 231429)


--- releases/WebKitGTK/webkit-2.20/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp	2018-05-07 09:29:41 UTC (rev 231428)
+++ releases/WebKitGTK/webkit-2.20/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp	2018-05-07 09:29:45 UTC (rev 231429)
@@ -107,6 +107,8 @@
     m_displayRefreshMonitor->invalidate();
 #endif
     m_compositingRunLoop->performTaskSync([this, protectedThis = makeRef(*this)] {
+        if (!m_context || !m_context->makeContextCurrent())
+            return;
         m_scene->purgeGLResources();
         m_context = nullptr;
         m_client.didDestroyGLContext();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to