Title: [269879] trunk/Source/WebKit
Revision
269879
Author
[email protected]
Date
2020-11-16 14:17:24 -0800 (Mon, 16 Nov 2020)

Log Message

[GPUProcess] Update GPUProcess process assertion based on active WebProcesses
https://bugs.webkit.org/show_bug.cgi?id=219002

Reviewed by Simon Fraser.

Update GPUProcess process assertion based on active WebProcesses, similarly to what
we do for the network process. Previously, we would never release the GPUProcess
process assertion and it would time out after 30 seconds in the background.

* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::updateProcessAssertion):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::updateProcessAssertions):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (269878 => 269879)


--- trunk/Source/WebKit/ChangeLog	2020-11-16 22:14:08 UTC (rev 269878)
+++ trunk/Source/WebKit/ChangeLog	2020-11-16 22:17:24 UTC (rev 269879)
@@ -1,3 +1,19 @@
+2020-11-16  Chris Dumez  <[email protected]>
+
+        [GPUProcess] Update GPUProcess process assertion based on active WebProcesses
+        https://bugs.webkit.org/show_bug.cgi?id=219002
+
+        Reviewed by Simon Fraser.
+
+        Update GPUProcess process assertion based on active WebProcesses, similarly to what
+        we do for the network process. Previously, we would never release the GPUProcess
+        process assertion and it would time out after 30 seconds in the background.
+
+        * UIProcess/GPU/GPUProcessProxy.cpp:
+        (WebKit::GPUProcessProxy::updateProcessAssertion):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::updateProcessAssertions):
+
 2020-11-16  Brent Fulgham  <[email protected]>
 
         [macOS] Remove remote tcp capability from WebContent Sandbox

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (269878 => 269879)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2020-11-16 22:14:08 UTC (rev 269878)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2020-11-16 22:17:24 UTC (rev 269879)
@@ -281,7 +281,11 @@
         }
         return;
     }
-    m_activityFromWebProcesses = nullptr;
+
+    // Use std::exchange() instead of a simple nullptr assignment to avoid re-entering this
+    // function during the destructor of the ProcessThrottler activity, before setting
+    // m_activityFromWebProcesses.
+    std::exchange(m_activityFromWebProcesses, nullptr);
 }
 
 static inline GPUProcessSessionParameters gpuProcessSessionParameters(const WebsiteDataStore& store)

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (269878 => 269879)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2020-11-16 22:14:08 UTC (rev 269878)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2020-11-16 22:17:24 UTC (rev 269879)
@@ -1715,6 +1715,10 @@
     WebsiteDataStore::forEachWebsiteDataStore([] (WebsiteDataStore& dataStore) {
         dataStore.networkProcess().updateProcessAssertion();
     });
+#if ENABLE(GPU_PROCESS)
+    if (auto* gpuProcess = GPUProcessProxy::singletonIfCreated())
+        gpuProcess->updateProcessAssertion();
+#endif
 #if ENABLE(SERVICE_WORKER)
     // Check on next run loop since the web process proxy tokens are probably being updated.
     callOnMainRunLoop([] {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to