Summary: | Morphing popups effect does not cross-fade on X11 | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Antonio Orefice <kokoko3k> |
Component: | effects-various | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | juri26, kokoko3k, nate, postix |
Priority: | NOR | Keywords: | regression, wayland |
Version: | 5.21.4 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
See Also: |
https://bugs.kde.org/show_bug.cgi?id=439689 https://bugs.kde.org/show_bug.cgi?id=446375 https://bugs.kde.org/show_bug.cgi?id=456802 https://bugs.kde.org/show_bug.cgi?id=416048 |
||
Latest Commit: | https://invent.kde.org/plasma/kwin/commit/31d1f885ce184b54690d44c5fcd4bb7384f6f0a3 | Version Fixed In: | 5.26 |
Sentry Crash Report: | |||
Attachments: |
Video showing the issue as it is right now
Full morphingpopup.js that discards crossfades when the previous texture is wrong or missing. |
Description
Antonio Orefice
2021-04-06 13:42:06 UTC
What kind of graphics hardware do you have? Hi, i tested woth same results on intel haswell and intel ivybridge. Maximize effect does x-fades. Do you think is an hardware/driver issue? Meantime, i removed the "CrossFadePrevious" part from the morphingpopup.js: if (!couldRetarget) { window.fadeAnimation = animate({ window: window, duration: morphingEffect.duration, animations: [{ type: Effect.CrossFadePrevious, to: 1.0, from: 0.0 }] }); } and now i've no more flashes or fades from transparencies. Still no Xfades, but at least is not broken. Created attachment 140544 [details] Video showing the issue as it is right now Since the fixing of this bug: https://bugs.kde.org/show_bug.cgi?id=439689 This one seems to be, altough partially, fixed. Weird flashes on oxygen theme are gone, but crossfade acts weirdly, and when it does, the window crossfades from transparency. I made a slowmotion video to show what happens: Crossfade works as expected when the pointer hovers from the first icon to the kdialog taskbar thumbnail. Then something wrird happens, pointer go to libreoffice thumbnail and the crossfare still works, but the previous texture it uses is still the one from konsole. *--> (1) It seems that the effect takes the "previous" texture of the crossfade <--* *--> only when the new *size* of the popup window has changed. <--* Anyway, even if I've not understood very well the logic in morphingpopups.js, i made a little workaround to it so that crossfade now works properly when the popup changes size, and simply skip the morphing code alltogheter when it stay the same size. That way, we can avoid fading from a transparent texture or from a wrong one: ------------------------------------------------------------------------------ + if (oldGeometry.width != newGeometry.width || + oldGeometry.height != newGeometry.height) { if (!couldRetarget) { window.fadeAnimation = animate({ window: window, duration: morphingEffect.duration, animations: [{ type: Effect.CrossFadePrevious, to: 1.0, from: 0.0 }] }); } + } ------------------------------------------------------------------------------ Created attachment 140545 [details]
Full morphingpopup.js that discards crossfades when the previous texture is wrong or missing.
Full morphingpopup.js that discards crossfades when the previous texture is wrong or missing.
Used to work with some glitches in plasma 5.22.5 due to this being fixed: https://bugs.kde.org/show_bug.cgi?id=439689 Now the same bug has returned and this is following. *** Bug 446375 has been marked as a duplicate of this bug. *** Can reproduce 100% on Wayland, but not X11, interestingly. *** Bug 446375 has been marked as a duplicate of this bug. *** (In reply to Nate Graham from comment #8) > Can reproduce 100% on Wayland, but not X11, interestingly. I have to point out that this bug is not about wayland not sliding and morphing the shape of the popup, which works correctly on X11, but that the Crossfade effect does not work on X11. ** ->> "Effect.CrossFadePrevious" Git commit 31d1f885ce184b54690d44c5fcd4bb7384f6f0a3 by Marco Martin. Committed on 07/09/2022 at 10:16. Pushed by mart into branch 'master'. Restore the crossfade effect This enables again the crossfade between the old window picture and the new one in the maximize and morphingpopup effects. It does that with the OffScreenEffect redirect() feature. Related: bug 439689 M +1 -0 autotests/integration/effects/maximize_animation_test.cpp M +22 -0 src/effects.cpp M +1 -0 src/effects.h M +10 -22 src/effects/blendchanges/blendchanges.cpp M +3 -3 src/effects/blendchanges/blendchanges.h M +25 -12 src/effects/maximize/package/contents/code/maximize.js M +23 -17 src/effects/morphingpopups/package/contents/code/morphingpopups.js M +2 -0 src/events.cpp M +2 -0 src/internalwindow.cpp M +12 -5 src/libkwineffects/kwinanimationeffect.cpp M +1 -1 src/libkwineffects/kwinanimationeffect.h M +29 -0 src/libkwineffects/kwineffects.h M +156 -51 src/libkwineffects/kwinoffscreeneffect.cpp M +46 -13 src/libkwineffects/kwinoffscreeneffect.h M +1 -0 src/window.cpp M +6 -0 src/window.h M +1 -0 src/x11window.cpp M +2 -0 src/xdgshellwindow.cpp https://invent.kde.org/plasma/kwin/commit/31d1f885ce184b54690d44c5fcd4bb7384f6f0a3 |