Title: [260614] trunk/Source/WebKit
Revision
260614
Author
[email protected]
Date
2020-04-23 18:08:37 -0700 (Thu, 23 Apr 2020)

Log Message

Bounce displayWasRefreshed() via EventDispatcher
https://bugs.webkit.org/show_bug.cgi?id=208778

Reviewed by Antti Koivisto.

Allow the WebContent process to be notified of display refresh off the main thread, so other
threads like the scrolling thread can respond without being blocked. Achieve this
by having EventDispatcher receive the IPC message, then bounce it to the main thread.

* UIProcess/mac/DisplayLink.cpp:
(WebKit::DisplayLink::displayLinkCallback):
* WebProcess/WebPage/EventDispatcher.cpp:
(WebKit::EventDispatcher::displayWasRefreshed):
* WebProcess/WebPage/EventDispatcher.h:
* WebProcess/WebPage/EventDispatcher.messages.in:
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::displayWasRefreshed):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (260613 => 260614)


--- trunk/Source/WebKit/ChangeLog	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/ChangeLog	2020-04-24 01:08:37 UTC (rev 260614)
@@ -1,3 +1,24 @@
+2020-04-23  Simon Fraser  <[email protected]>
+
+        Bounce displayWasRefreshed() via EventDispatcher
+        https://bugs.webkit.org/show_bug.cgi?id=208778
+
+        Reviewed by Antti Koivisto.
+
+        Allow the WebContent process to be notified of display refresh off the main thread, so other
+        threads like the scrolling thread can respond without being blocked. Achieve this
+        by having EventDispatcher receive the IPC message, then bounce it to the main thread.
+
+        * UIProcess/mac/DisplayLink.cpp:
+        (WebKit::DisplayLink::displayLinkCallback):
+        * WebProcess/WebPage/EventDispatcher.cpp:
+        (WebKit::EventDispatcher::displayWasRefreshed):
+        * WebProcess/WebPage/EventDispatcher.h:
+        * WebProcess/WebPage/EventDispatcher.messages.in:
+        * WebProcess/WebProcess.h:
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::displayWasRefreshed):
+
 2020-04-23  David Kilzer  <[email protected]>
 
         Clean up QuickLookThumbnailLoader

Modified: trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp (260613 => 260614)


--- trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp	2020-04-24 01:08:37 UTC (rev 260614)
@@ -28,7 +28,7 @@
 
 #if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
 
-#include "WebProcessMessages.h"
+#include "EventDispatcherMessages.h"
 #include <wtf/ProcessPrivilege.h>
 
 namespace WebKit {
@@ -124,10 +124,10 @@
     auto* displayLink = static_cast<DisplayLink*>(data);
     LockHolder locker(displayLink->m_observersLock);
     for (auto& connection : displayLink->m_observers.keys())
-        connection->send(Messages::WebProcess::DisplayWasRefreshed(displayLink->m_displayID), 0);
+        connection->send(Messages::EventDispatcher::DisplayWasRefreshed(displayLink->m_displayID), 0);
     return kCVReturnSuccess;
 }
 
 } // namespace WebKit
 
-#endif
+#endif // ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)

Modified: trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp	2020-04-24 01:08:37 UTC (rev 260614)
@@ -42,6 +42,10 @@
 #include <WebCore/AsyncScrollingCoordinator.h>
 #endif
 
+#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
+#include <WebCore/DisplayRefreshMonitorManager.h>
+#endif
+
 #if ENABLE(SCROLLING_THREAD)
 #include <WebCore/ScrollingThread.h>
 #include <WebCore/ThreadedScrollingTree.h>
@@ -258,4 +262,13 @@
 }
 #endif
 
+#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
+void EventDispatcher::displayWasRefreshed(PlatformDisplayID displayID)
+{
+    RunLoop::main().dispatch([displayID]() {
+        DisplayRefreshMonitorManager::sharedManager().displayWasUpdated(displayID);
+    });
+}
+#endif
+
 } // namespace WebKit

Modified: trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h	2020-04-24 01:08:37 UTC (rev 260614)
@@ -43,6 +43,7 @@
 
 namespace WebCore {
 class ThreadedScrollingTree;
+using PlatformDisplayID = uint32_t;
 }
 
 namespace WebKit {
@@ -97,6 +98,10 @@
     static void sendDidReceiveEvent(WebCore::PageIdentifier, WebEvent::Type, bool didHandleEvent);
 #endif
 
+#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
+    void displayWasRefreshed(WebCore::PlatformDisplayID);
+#endif
+
     Ref<WorkQueue> m_queue;
 
 #if ENABLE(SCROLLING_THREAD)

Modified: trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in	2020-04-24 01:08:37 UTC (rev 260614)
@@ -28,4 +28,7 @@
 #if ENABLE(MAC_GESTURE_EVENTS)
     GestureEvent(WebCore::PageIdentifier pageID, WebKit::WebGestureEvent event)
 #endif
+#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
+    DisplayWasRefreshed(uint32_t displayID)
+#endif
 }

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2020-04-24 01:08:37 UTC (rev 260614)
@@ -475,7 +475,6 @@
 #if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
     void scrollerStylePreferenceChanged(bool useOverlayScrollbars);
     void displayConfigurationChanged(CGDirectDisplayID, CGDisplayChangeSummaryFlags);
-    void displayWasRefreshed(CGDirectDisplayID);
 #endif
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2020-04-24 01:08:37 UTC (rev 260614)
@@ -119,7 +119,6 @@
 #if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
     ScrollerStylePreferenceChanged(bool useOvelayScrollbars)
     DisplayConfigurationChanged(CGDirectDisplayID displayID, CGDisplayChangeSummaryFlags flags)
-    DisplayWasRefreshed(uint32_t displayID)
 #endif
 
 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)

Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (260613 => 260614)


--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-04-24 01:05:34 UTC (rev 260613)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-04-24 01:08:37 UTC (rev 260614)
@@ -875,11 +875,6 @@
 {
     GraphicsContextGLOpenGLManager::displayWasReconfigured(displayID, flags, nullptr);
 }
-    
-void WebProcess::displayWasRefreshed(CGDirectDisplayID displayID)
-{
-    DisplayRefreshMonitorManager::sharedManager().displayWasUpdated(displayID);
-}
 #endif
 
 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to