_connectPowerWatches() used Gio.DBusProxy.new_for_bus_sync(), which blocks gnome-shell's single main thread until the system bus replies. Since gnome-shell is the Wayland compositor, that stalls the entire screen for however long it takes — and this runs every time live wallpaper starts, including automatically at login whenever it was left enabled. Right after login, with upowerd/D-Bus still warming up alongside everything else, that block can run for many seconds up to the ~25s GDBus timeout, which matches reports of the whole system freezing right after the greeter/login. Switched to the async new_for_bus(), guarded by a generation counter so a stale in-flight lookup can't clobber state from a later _stop()/_connectPowerWatches().
_connectPowerWatches() used Gio.DBusProxy.new_for_bus_sync(), which blocks gnome-shell's single main thread until the system bus replies. Since gnome-shell is the Wayland compositor, that stalls the entire screen for however long it takes — and this runs every time live wallpaper starts, including automatically at login whenever it was left enabled. Right after login, with upowerd/D-Bus still warming up alongside everything else, that block can run for many seconds up to the ~25s GDBus timeout, which matches reports of the whole system freezing right after the greeter/login. Switched to the async new_for_bus(), guarded by a generation counter so a stale in-flight lookup can't clobber state from a later _stop()/_connectPowerWatches().
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
_connectPowerWatches() used Gio.DBusProxy.new_for_bus_sync(), which blocks gnome-shell's single main thread until the system bus replies. Since gnome-shell is the Wayland compositor, that stalls the entire screen for however long it takes — and this runs every time live wallpaper starts, including automatically at login whenever it was left enabled. Right after login, with upowerd/D-Bus still warming up alongside everything else, that block can run for many seconds up to the ~25s GDBus timeout, which matches reports of the whole system freezing right after the greeter/login. Switched to the async new_for_bus(), guarded by a generation counter so a stale in-flight lookup can't clobber state from a later _stop()/_connectPowerWatches().