Summary: | Moving windows with wobbly windows applied makes the window clip back and fourth slightly | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Søren Ølholm <soeren.sproed> |
Component: | compositing | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 5.21.0 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/commit/705e4fcc688852fec50c08559b6b58e2df2c0973 | Version Fixed In: | 5.21.1 |
Sentry Crash Report: |
Description
Søren Ølholm
2021-02-18 17:44:01 UTC
Git commit 33e3b92946a7e645e6a6b221f32b0f2c565d8fd1 by Vlad Zahorodnii. Committed on 19/02/2021 at 16:34. Pushed by vladz into branch 'master'. effects/wobblywindows: Allow model geometry and real geometry get out of sync Currently, the wobbly windows effect assumes that the window data will be updated on every repaint. However, there are legit cases when the time diff between frames can be 0, for example when per screen rendering is on. If we are unlucky enough and the geometry of the window changes in that very short moment, the mapping between window quads and the bezier patch will be wrong. The window will most likely bounce back and forth. In order to improve handling of that tricky case, this change makes the computeBezierPoint() function take the "uv" coordinates rather than the absolute "xy" coordinates of window vertices. This loosens the connection between the real geometry of the window and the cached bezier patch, and overall makes the effect's timing code more robust. This can be also useful if the wobbly windows effect starts accumulating time diffs and performing the integration step every N msecs with the purpose of maintaining uniform "wobbliness" across different refresh rates. M +6 -8 src/effects/wobblywindows/wobblywindows.cpp https://invent.kde.org/plasma/kwin/commit/33e3b92946a7e645e6a6b221f32b0f2c565d8fd1 Git commit 705e4fcc688852fec50c08559b6b58e2df2c0973 by Vlad Zahorodnii. Committed on 19/02/2021 at 16:42. Pushed by vladz into branch 'Plasma/5.21'. effects/wobblywindows: Allow model geometry and real geometry get out of sync Currently, the wobbly windows effect assumes that the window data will be updated on every repaint. However, there are legit cases when the time diff between frames can be 0, for example when per screen rendering is on. If we are unlucky enough and the geometry of the window changes in that very short moment, the mapping between window quads and the bezier patch will be wrong. The window will most likely bounce back and forth. In order to improve handling of that tricky case, this change makes the computeBezierPoint() function take the "uv" coordinates rather than the absolute "xy" coordinates of window vertices. This loosens the connection between the real geometry of the window and the cached bezier patch, and overall makes the effect's timing code more robust. This can be also useful if the wobbly windows effect starts accumulating time diffs and performing the integration step every N msecs with the purpose of maintaining uniform "wobbliness" across different refresh rates. (cherry picked from commit 33e3b92946a7e645e6a6b221f32b0f2c565d8fd1) M +6 -8 effects/wobblywindows/wobblywindows.cpp https://invent.kde.org/plasma/kwin/commit/705e4fcc688852fec50c08559b6b58e2df2c0973 |