Bug 444502

Summary: Wayland: auto-hiding panel flickering
Product: [Plasma] plasmashell Reporter: gudvinr+kde
Component: PanelAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: nate, this.is.reid
Priority: NOR    
Version: 5.23.0   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In: 5.23.3
Attachments: Issue recording

Description gudvinr+kde 2021-10-27 18:44:56 UTC
Created attachment 142951 [details]
Issue recording

SUMMARY

Sometimes panel that set as "Auto hide" starts flickering when I remove mouse while it tries to hide.

Then it doesn't stop flickering until I make couple of "hover-release" cycles.

It seems like it raises and hiddens by itself while I move mouse cursor elsewhere on the screen. If I don't move cursor for a while it doesn't flicker.

STEPS TO REPRODUCE
1. Add auto-hiding panel
2. Use Wayland session for a while

OBSERVED RESULT

Panel starts flickering


EXPECTED RESULT

Usable wayland session without epilepsy-enabled panels.


SOFTWARE/OS VERSIONS
Operating System: Arch Linux
KDE Plasma Version: 5.23.2
KDE Frameworks Version: 5.87.0
Qt Version: 5.15.2
Kernel Version: 5.14.14-arch1-1 (64-bit)
Graphics Platform: Wayland
Graphics Processor: AMD VEGAM 

ADDITIONAL INFORMATION

I'd like to make a video
Comment 1 Nate Graham 2021-10-28 14:23:12 UTC
Cannot reproduce flickering, but the animation is known to be not working at all. See Bug 443711.
Comment 2 Vlad Zahorodnii 2021-10-29 12:09:07 UTC
Git commit 1e634be2f5ec286d562b7f990a4e5b98a684a224 by Vlad Zahorodnii.
Committed on 29/10/2021 at 12:08.
Pushed by vladz into branch 'master'.

effects/slidingpopups: Schedule workspace repaints

For optimization purposes, kwin will ignore repaint regions scheduled by
invisible windows, e.g. hidden docks, minimized windows, etc.

The problem is that it sort of breaks w->addRepaintFull(). If a lot of
animation frames are dropped, for example due to heavy cpu load, the
sliding popups animation can jump from the middle of animation right up
to the end. It will schedule a repaint but it will be ignored.

In order to work around that issue, this change makes the sliding popups
effect schedule workspace repaints in postPaintScreen() to ensure that
the Scene will always repaint dirty regions.

Hopefully, this should fix bugs where auto-hide panels sometimes flicker
on Wayland.

M  +1    -1    src/effects/slidingpopups/slidingpopups.cpp

https://invent.kde.org/plasma/kwin/commit/1e634be2f5ec286d562b7f990a4e5b98a684a224
Comment 3 Vlad Zahorodnii 2021-10-29 12:09:38 UTC
Git commit 8ca83ef190dfb0bf32719073fc7360ddfea799b6 by Vlad Zahorodnii.
Committed on 29/10/2021 at 12:09.
Pushed by vladz into branch 'Plasma/5.23'.

effects/slidingpopups: Schedule workspace repaints

For optimization purposes, kwin will ignore repaint regions scheduled by
invisible windows, e.g. hidden docks, minimized windows, etc.

The problem is that it sort of breaks w->addRepaintFull(). If a lot of
animation frames are dropped, for example due to heavy cpu load, the
sliding popups animation can jump from the middle of animation right up
to the end. It will schedule a repaint but it will be ignored.

In order to work around that issue, this change makes the sliding popups
effect schedule workspace repaints in postPaintScreen() to ensure that
the Scene will always repaint dirty regions.

Hopefully, this should fix bugs where auto-hide panels sometimes flicker
on Wayland.


(cherry picked from commit 1e634be2f5ec286d562b7f990a4e5b98a684a224)

M  +1    -1    src/effects/slidingpopups/slidingpopups.cpp

https://invent.kde.org/plasma/kwin/commit/8ca83ef190dfb0bf32719073fc7360ddfea799b6
Comment 4 Nate Graham 2021-10-29 16:53:49 UTC
*** Bug 443711 has been marked as a duplicate of this bug. ***