| Summary: | Compositing interruption during "present windows" effect disables keyboard / mouse input | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Mahendra Tallur <mahen> |
| Component: | compositing | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | nate |
| Priority: | NOR | Flags: | vlad.zahorodnii:
Wayland-
vlad.zahorodnii: X11+ vlad.zahorodnii: ReviewRequest+ |
| Version First Reported In: | 5.15.1 | ||
| Target Milestone: | --- | ||
| Platform: | Neon | ||
| OS: | Linux | ||
| URL: | https://phabricator.kde.org/D19178 | ||
| Latest Commit: | https://commits.kde.org/kwin/38e22ce6d18ca3f71cc1b3213ce4fc7de9cc8ef4 | Version Fixed/Implemented In: | 5.15.3 |
| Sentry Crash Report: | |||
|
Description
Mahendra Tallur
2018-10-09 18:45:25 UTC
So, I spent some time investigating why the hell this bug happens. Apparently, doUngrabKeyboard has to be re-implemented by a Platform sub-class. The only problem is that it's not a good idea to call a virtual method from the destructor of a base class. Git commit 38e22ce6d18ca3f71cc1b3213ce4fc7de9cc8ef4 by Vlad Zagorodniy. Committed on 11/03/2019 at 07:23. Pushed by vladz into branch 'Plasma/5.15'. [platforms/x11] Properly unload effects on X11 Summary: When Compositor finishes compositing, it destroys EffectsHandlerImpl, which in its turn tries to unload all effects. But there is a problem... EffectsHandlerImpl has platform-specific hooks to ungrab keyboard and also stop mouse interception. Given that any call made to a virtual function in the destructor of a base class(EffectsHandlerImpl) won't go to a derived class(EffectsHandlerImplX11), keyboard won't be ungrabbed even if effect that grabbed it is already gone. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19178 M +11 -1 plugins/platforms/x11/standalone/effects_x11.cpp M +1 -1 plugins/platforms/x11/standalone/effects_x11.h https://commits.kde.org/kwin/38e22ce6d18ca3f71cc1b3213ce4fc7de9cc8ef4 Thank you, again, so much for the fix, Vlad ! np :-) |