Suspend rotation while a live wallpaper is on screen
The extension's own log showed rotation kept firing ("Wallpaper
changed to ...") after live wallpaper playback had already started.
Each rotation change writes org.gnome.desktop.background's
picture-uri, which makes GNOME Shell repaint its own background actor
into the same _backgroundGroup our live wallpaper actor lives in,
landing on top of it and hiding the video/GIF entirely.
LiveWallpaperManager now takes an onActiveChanged callback, invoked
only on actual start/stop transitions, which extension.js uses to
suspend/unsuspend RotationManager. This is tracked separately from
user-initiated pause()/resume() so turning live wallpaper off restores
whatever rotation state the user actually had, and next()/previous()
now no-op while suspended so manual/forced-OLED wallpaper changes
can't sneak one in either. The indicator's "Next Wallpaper" item is
greyed out to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RDqbdjsiisSU7CbQke4g8
This commit is contained in:
@@ -14,7 +14,10 @@ protection against OLED burn-in.
|
||||
desktop background. Frames are decoded with GStreamer and rendered
|
||||
directly by GNOME Shell's own Clutter stage (no external, incompatible
|
||||
Clutter build involved). Playback can automatically pause on battery
|
||||
power or while a window is fullscreen.
|
||||
power or while a window is fullscreen. Automatic rotation is
|
||||
automatically suspended while a live wallpaper is actually on screen
|
||||
(and resumes afterward), since changing the static wallpaper would
|
||||
otherwise repaint over the video.
|
||||
- **OLED burn-in protection** — three independent, individually toggled
|
||||
techniques:
|
||||
- *Pixel shifting*: nudges the background a few pixels on a slow drift
|
||||
|
||||
Reference in New Issue
Block a user