aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/appearance/WallpaperSpread.qml
AgeCommit message (Collapse)AuthorFilesLines
3 dayswallpaper: keep the burn's cover clear until both pictures are decodedDanilo M.1-0/+6
A brief flicker was left at the start of the burn on both screens. The cover drew each picture as soon as it decoded, and the new one, under the old, usually decodes first, so it showed for a frame or two before the old one covered it. Both now stay hidden until both are ready; the surface is clear until then, and swaybg underneath is still showing the old picture, since wallp waits for covered(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 dayswallpaper: start wallp only once the burn's cover is on screenDanilo M.1-1/+11
The new wallpaper flashed in for a moment, the old one came back over it, and only then did it burn. run() started wallp in the same turn as swapping, while the cover was still mapping and decoding its two pictures asynchronously, so swaybg swapped under an empty cover. run() now holds wallp until each cover reports it is drawing (its pictures decoded, then 50ms for a few frames), with a 1.5s fallback for a cover that never comes: a missing screen or a picture that fails to load. A run with nothing to cover starts at once, as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 dayswallpaper: one run() for Apply and the engine, with a finished signalDanilo M.1-3/+4
The engine's timer must set wallpapers the same way Apply does so the burn plays. run() is that one path; applied stays Apply's alone (save bar, window close) while finished marks every run's end, which is what the spread overlay now hides on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 dayswallpaper: burn the old picture away on ApplyDanilo M.1-0/+116
swaybg has no transitions: wallp kills the running one and starts a new one, which can show a frame of nothing in between. WallpaperSpread puts a click-through surface on the bottom layer of each screen, above swaybg and below every window, holding the old picture while wallp runs. A shader burns it away over the new one: each pixel's threshold mixes its distance from a random starting point with fractal noise, and a flame and char band runs just ahead of the front. The surface goes once wallp has exited, or at once if it failed, since a failed set may have left either picture. Wallpapers.apply() announces each swap with the old path before wallp runs, while current still names it. Sets from a terminal get no effect: by the time wall_h changes, swaybg has already swapped. The animation is linear, 3.5s: an ease spent its slow ends where nothing was left to burn, and read as well under the 2.6s it was given. The compiled .qsb is committed beside its source, since nothing builds it. AGENTS.md gains the shader cache trap hit on the way: a running shell keeps a shader by URL, so a recompiled .qsb under the same name is ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>