diff --git a/quickshell/Modules/BlurredWallpaperBackground.qml b/quickshell/Modules/BlurredWallpaperBackground.qml index 4732a368..c07cb4eb 100644 --- a/quickshell/Modules/BlurredWallpaperBackground.qml +++ b/quickshell/Modules/BlurredWallpaperBackground.qml @@ -100,10 +100,10 @@ Variants { Connections { target: currentWallpaper function onStatusChanged() { - if (currentWallpaper.status === Image.Ready) { - root._renderSettling = true; - renderSettleTimer.restart(); - } + if (currentWallpaper.status !== Image.Ready && currentWallpaper.status !== Image.Error) + return; + root._renderSettling = true; + renderSettleTimer.restart(); } } @@ -206,6 +206,7 @@ Variants { visible: false opacity: 1 asynchronous: true + retainWhileLoading: true smooth: true cache: true sourceSize: Qt.size(root.textureWidth, root.textureHeight) @@ -218,6 +219,7 @@ Variants { visible: false opacity: 0 asynchronous: true + retainWhileLoading: true smooth: true cache: true sourceSize: Qt.size(root.textureWidth, root.textureHeight) @@ -300,6 +302,8 @@ Variants { root.useNextForEffect = false; nextWallpaper.source = ""; root.transitionProgress = 0.0; + root._renderSettling = true; + renderSettleTimer.restart(); root.effectActive = false; } } diff --git a/quickshell/Modules/WallpaperBackground.qml b/quickshell/Modules/WallpaperBackground.qml index 883be280..01f135b0 100644 --- a/quickshell/Modules/WallpaperBackground.qml +++ b/quickshell/Modules/WallpaperBackground.qml @@ -93,10 +93,10 @@ Variants { Connections { target: currentWallpaper function onStatusChanged() { - if (currentWallpaper.status === Image.Ready) { - root._renderSettling = true; - renderSettleTimer.restart(); - } + if (currentWallpaper.status !== Image.Ready && currentWallpaper.status !== Image.Error) + return; + root._renderSettling = true; + renderSettleTimer.restart(); } } @@ -188,7 +188,7 @@ Variants { Component.onCompleted: { if (typeof wallpaperWindow.updatesEnabled !== "undefined") - wallpaperWindow.updatesEnabled = Qt.binding(() => !root.source || root.effectActive || root._renderSettling || root.overviewBlurActive || root._overviewBlurSettling || currentWallpaper.status === Image.Loading || nextWallpaper.status === Image.Loading); + wallpaperWindow.updatesEnabled = Qt.binding(() => !root.source || root.effectActive || root._renderSettling || root.overviewBlurActive || root._overviewBlurSettling || root.pendingWallpaper !== "" || root._deferredSource !== "" || currentWallpaper.status === Image.Loading || nextWallpaper.status === Image.Loading); if (!source) { root._renderSettling = false; @@ -320,6 +320,7 @@ Variants { opacity: 1 layer.enabled: false asynchronous: true + retainWhileLoading: true smooth: true cache: true sourceSize: Qt.size(root.textureWidth, root.textureHeight) @@ -333,6 +334,7 @@ Variants { opacity: 0 layer.enabled: false asynchronous: true + retainWhileLoading: true smooth: true cache: true sourceSize: Qt.size(root.textureWidth, root.textureHeight) @@ -591,6 +593,8 @@ Variants { root.transitionProgress = 0.0; currentWallpaper.layer.enabled = false; nextWallpaper.layer.enabled = false; + root._renderSettling = true; + renderSettleTimer.restart(); root.effectActive = false; if (!root.pendingWallpaper)