Broken/stale frame after resume until mouse movement #15590
Replies: 7 comments 4 replies
|
I'm experiencing the same issue and it only began after the 0.56 update. Unsure what logs of mine would be helpful to include to see a possible common cause. Let me know if you figure out a fix! |
|
Glad to hear it's not an isolated issue. I've even done a clean, re-install of arch and this issue persists. I've also noticed that by pkilling hypridle before closing and suspending, it actually won't even show hyprlock at all, it's just the last frame of the workspace you were on before suspending |
|
Issue persisting on Hyprland 0.56.1 |
|
Hyprlock issues should be filed at the
Possibly this: |
|
Strangely, the problem seems to have fixed itself? Back on up to date Hyprland for arch, the screen redraws itself on its own after aronud a second. I'll try one more time with a clean install, and provided it works I will be closing this. Thanks for all the help |
|
Clean install shows old problem. Now I'm not sure where it fixed itself. Either way, these commits seemed most relevant:
Each of those were built against the related utilities' commits shows in its respective versioned flake.lock. I don't really have more time or effort to spare on this. Hopefully future me or someone else can come along and find this useful. |
Uh oh!
There was an error while loading. Please reload this page.
Hyprland version
0.56
Regression
Yes, this used to work correctly before and started happening after the 0.56 update.
Describe the bug
Hyprland version: 0.56
hyprlock version: 0.9.6
GPU: Intel iGPU for compositing, Nvidia dGPU on PRIME render offload (suspended with RTD3 when idle)
Display manager: ly
After resuming from suspend with the lid opening, my screen shows a kinda corrupted frame instead of hyprlock's actual lock screen. At higher brightness I can make out roughly two things mixed together on screen: part of whatever was on the workspace before suspend (in my case ghostty) and part of the hyprlock frame that should be fully displayed, stuck showing the time of when it suspended. It's not just an old full frame sitting there, and it's not random noise either. It looks like only part of the display is updated after resume. The image appears to be a mix of the pre-suspend workspace and the hyprlock frame, rather than a complete stale frame or random corruption. Claude told me this could be some hardware planes aren't being updated (very ignorant myself)?
Typing on the keyboard does nothing. The broken frame just sits there. But moving the mouse even slightly immediately forces a full, correct redraw of hyprlock (can tell from corrected time) and any keys typed beforehand are applied right away, as if they'd been received the whole time.
Seems to me like Hyprland isn't completing a proper repaint or "pageflip" on its own after resume. Something about cursor motion is forcing the repaint that (I think) should probably be happening automatically. Ultimately, mouse movement consistently causes an immediate redraw that does not happen on its own after resume.
Possibly related kernel log:
I also see this in dmesg, happening during suspend rather than resume. It looks related to power so I assumed it was my undervolt but even with it disabled I see the same effect:
I'm not sure if it's related to the repaint issue or a separate problem, but it happens consistently on this machine every time I suspend, so I wanted to include it in case it matters. I can't reproduce this on an intel-only machine, both up to date. Maybe this is NVIDIA PRIME specific or something?
Possibly related observation:
I originally thought this was a hyprlock or hypridle bug related to input focus, but I thought once I confirmed keyboard input has no effect on the redraw while mouse movement does, it seems more like Hyprland is not finishing the repaint on its own after resume, rather than an input handling problem in hyprlock, because I also noticed that a single
loginctl lock sessioncall triggers the Lock dbus signal twice in hypridle's log, which spawns two hyprlock processes for the same lock event. The second one gets rejected byext_session_lock_manager. I confirmed this happens even with only one hypridle process running, and even after removing an idle timeout listener that also calledloginctl lock session, so it wasn't caused by a duplicate trigger on my end. I'm not sure if this is related to the repaint issue above or a separate thing, but it happens every time and seemed worthmentioning in case it's connected. Here's some of those logs:
hyprlock log for the rejected instance:
Please let me know if this part should go separately somewhere maybe
Reproduction steps
before_sleep_cmdset tologinctl lock session, then suspend on closed lidSystem info and config
info.txt
All reactions