[webkit-changes] [WebKit/WebKit] a33d2c: updateRendering() gets stuck at the wrong framerat...
Tim Horton
noreply at github.com
Tue Aug 29 19:37:30 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a33d2c717ecb2870f364d3952bd340b4f54728a7
https://github.com/WebKit/WebKit/commit/a33d2c717ecb2870f364d3952bd340b4f54728a7
Author: Tim Horton <thorton at apple.com>
Date: 2023-08-29 (Tue, 29 Aug 2023)
Changed paths:
M Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h
M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm
Log Message:
-----------
updateRendering() gets stuck at the wrong framerate when thermal throttling changes
https://bugs.webkit.org/show_bug.cgi?id=260846
rdar://112799115
Reviewed by Wenson Hsieh and Simon Fraser.
It turns out that `maximumRefreshRate` is actually "the maximum frame rate you can
achieve given current throttling behaviors", not "the frame rate of the display".
That means that, when throttling states change, maximumRefreshRate can change too.
We currently do not respond to changes in maximumRefreshRate. This means that we
can get stuck with an incorrect `maximumRefreshRate` (and `preferredFramesPerSecond`,
which is downstream of it).
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm:
(-[WKDisplayLinkHandler initWithDrawingAreaProxy:]):
(-[WKDisplayLinkHandler invalidate]):
(-[WKDisplayLinkHandler observeValueForKeyPath:ofObject:change:context:]):
(-[WKDisplayLinkHandler didChangeNominalFramesPerSecond]):
When the CADisplayLink's CADisplay's `refreshRate` changes, reconfigure the display, which
results in communicating the new maximum frame rate back to WebCore and also (indirectly)
updating the CADisplayLink's `preferredFramesPerSecond`.
* Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
Add CADisplay SPI.
Canonical link: https://commits.webkit.org/267440@main
More information about the webkit-changes
mailing list