[webkit-changes] [WebKit/WebKit] c206b6: Adopt CADisplayLink on macOS 14
Antoine Quint
noreply at github.com
Tue Jun 4 09:06:24 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c206b6b473adbc878d70f41e79ec4b2dbe5dc157
https://github.com/WebKit/WebKit/commit/c206b6b473adbc878d70f41e79ec4b2dbe5dc157
Author: Antoine Quint <graouts at webkit.org>
Date: 2024-06-04 (Tue, 04 Jun 2024)
Changed paths:
M Source/WTF/wtf/PlatformHave.h
M Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/PlatformScreen.h
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/DisplayLink.h
R Source/WebKit/UIProcess/mac/DisplayLinkMac.cpp
A Source/WebKit/UIProcess/mac/DisplayLinkMac.mm
A Source/WebKit/UIProcess/mac/LegacyDisplayLinkMac.cpp
M Source/WebKit/UIProcess/mac/WKImmediateActionController.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
Adopt CADisplayLink on macOS 14
https://bugs.webkit.org/show_bug.cgi?id=274268
rdar://119217720
Reviewed by Simon Fraser.
The CADisplayLink API is newly available on macOS 14. We add a new `HAVE(CA_DISPLAY_LINK_MAC)`
directive and if it's not available, use a legacy codepath where `CVDisplayLink` is used instead,
in `LegacyDisplayLinkMac.cpp`, and when available use `CADisplayLink` in `DisplayLinkMac.mm`.
In order to preserve a similar behavior to `CVDisplayLink`, we spawn a dedicated thread for each
`CADisplayLink`. Note that on macOS, the creation of a `CADisplayLink` is done through `NSScreen`,
so we also export the `WebCore::screen()` method to be able to get the appropriate `NSScreen` for
a given `DisplayLink` instance.
Patch written with the help of Ben Nham.
* Source/WTF/wtf/PlatformHave.h:
* Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
* Source/WebCore/platform/PlatformScreen.h:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/DisplayLink.h:
* Source/WebKit/UIProcess/mac/DisplayLinkMac.mm: Added.
(-[WKDisplayLinkHandler initWithScreen:client:]):
(-[WKDisplayLinkHandler threadWasCreated]):
(-[WKDisplayLinkHandler displayLinkFired:]):
(-[WKDisplayLinkHandler invalidate]):
(-[WKDisplayLinkHandler isRunning]):
(-[WKDisplayLinkHandler setRunning:]):
(-[WKDisplayLinkHandler nominalFramesPerSecond]):
(WebKit::DisplayLink::platformInitialize):
(WebKit::DisplayLink::platformFinalize):
(WebKit::DisplayLink::platformIsRunning const):
(WebKit::DisplayLink::platformStart):
(WebKit::DisplayLink::platformStop):
(WebKit::DisplayLink::displayLinkHandlerCallbackFired):
* Source/WebKit/UIProcess/mac/LegacyDisplayLinkMac.cpp: Renamed from Source/WebKit/UIProcess/mac/DisplayLinkMac.cpp.
(WebKit::DisplayLink::platformInitialize):
(WebKit::DisplayLink::platformFinalize):
(WebKit::DisplayLink::nominalFramesPerSecondFromDisplayLink):
(WebKit::DisplayLink::platformIsRunning const):
(WebKit::DisplayLink::platformStart):
(WebKit::DisplayLink::platformStop):
(WebKit::DisplayLink::displayLinkCallback):
* Source/WebKit/UIProcess/mac/WKImmediateActionController.mm:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/279701@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list