mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-20 02:04:01 -04:00
fix(wallpaper): keep rendering until the scrolling image has decoded (#3725)
In scroll fill mode the parallax layer decodes its own copy of the wallpaper (parallaxImage, asynchronous). renderActive only waited for currentWallpaper and nextWallpaper, so after a wallpaper change it could drop to false and let updatesEnabled run out after the three settle frames while parallaxImage was still loading. The window then kept showing the black backing until something else, like a workspace switch, started rendering again. Count parallaxImage loading as active too. When it turns Ready, renderActive flips back and onRenderActiveChanged invalidates, so the finished image gets its settle frames. Fixes #3702. Diagnosis and fix by @clethbridgedaniel in the issue.
This commit is contained in:
@@ -160,7 +160,7 @@ Variants {
|
||||
readonly property var backingWindow: Window.window
|
||||
readonly property bool showsBackdrop: !source || isColorSource || currentWallpaper.status === Image.Error
|
||||
readonly property bool backdropBusy: showsBackdrop && !(backdropLoader.item?.ready ?? false)
|
||||
readonly property bool renderActive: backdropBusy || effectActive || overviewBlurActive || pendingWallpaper !== "" || _deferredSource !== "" || changePending || _freezeWaitFrames > 0 || frameAnim.running || currentWallpaper.status === Image.Loading || nextWallpaper.status === Image.Loading
|
||||
readonly property bool renderActive: backdropBusy || effectActive || overviewBlurActive || pendingWallpaper !== "" || _deferredSource !== "" || changePending || _freezeWaitFrames > 0 || frameAnim.running || currentWallpaper.status === Image.Loading || nextWallpaper.status === Image.Loading || parallaxImage.status === Image.Loading
|
||||
property int _settleFrames: 3
|
||||
|
||||
function invalidate() {
|
||||
|
||||
Reference in New Issue
Block a user