Bug 435378 - Yakuake does not slide out properly anymore
Summary: Yakuake does not slide out properly anymore
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: scene-opengl (show other bugs)
Version: 5.21.90
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-04-05 09:39 UTC by Kai Uwe Broulik
Modified: 2021-08-06 17:19 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.22.5
Sentry Crash Report:


Attachments
Blue remnant of the Yakuake window (90.39 KB, image/png)
2021-04-05 09:39 UTC, Kai Uwe Broulik
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kai Uwe Broulik 2021-04-05 09:39:24 UTC
Created attachment 137341 [details]
Blue remnant of the Yakuake window

SUMMARY
Since some recent KWin change(?) Yakuake does not properly slide out properly anymore. When the drawer hides, it turns completely blue and then slides away, rather than remaining its last window contents.

STEPS TO REPRODUCE
1. Run Yakuake, make sure "let window manager do animation" is on (default)
2. Hit F12 to open Yakuake
3. Hit F12 again to close it

OBSERVED RESULT
The Yakuake window turns blue and is animated out

EXPECTED RESULT
The Yakuake window retains its last content (a terminal) and animates that out

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: git master as of 2012-04-05

ADDITIONAL INFORMATION
Yakuake does not appear to have changed noticeably in recent weeks, hence suspecting KWin where there have been a bunch of damage and teardown related changes.
Comment 1 Nate Graham 2021-04-06 00:45:54 UTC
Does it not happen if compositing is disabled?
Comment 2 Vlad Zahorodnii 2021-04-07 19:31:05 UTC
For what it's worth, there's a similar issue in Konsole, but it's caused by Konsole itself. https://invent.kde.org/tcanabrava/konsole/-/commit/6288a90aec896dab5281e955b59739ada6fa4ef3 is a potential fix
Comment 3 Antonio Orefice 2021-08-03 16:19:48 UTC
Since downgrading kwin to the now reported version solves the issue, i think the problem lies there.
This: https://bugs.kde.org/show_bug.cgi?id=438458
seems to be a dupe.
Comment 4 Antonio Orefice 2021-08-04 10:43:39 UTC
Bisected. The offending commit is:

koko@Gozer# git bisect good
47113e09b8a80497463725a795728a34e9db940c is the first bad commit
commit 47113e09b8a80497463725a795728a34e9db940c
Author: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date:   Thu Feb 4 11:07:20 2021 +0200

    scene: Introduce window items
    
    Currently, dealing with sub-surfaces is very difficult due to the scene
    design being heavily influenced by X11 requirements.
    
    The goal of this change is to re-work scene abstractions to make improving
    the wayland support easier.
    
    The Item class is based on the QQuickItem class. My hope is that one day
    we will be able to transition to QtQuick for painting scene, but in
    meanwhile it makes more sense to have a minimalistic internal item class.
    
    The WindowItem class represents a window. The SurfaceItem class represents
    the contents of either an X11, or a Wayland, or an internal surface. The
    DecorationItem and the ShadowItem class represent the server-side deco and
    drop-shadow, respectively.
    
    At the moment, the SurfaceItem is bound to the scene window, but the long
    term plan is to break that connection so we could re-use the SurfaceItem
    for things such as software cursors and drag-and-drop additional icons.
    
    One of the responsibilities of the Item is to schedule repaints as needed.
    Ideally, there shouldn't be any addRepaint() calls in the core code. The
    Item class schedules repaints on geometry updates. In the future, it also
    has to request an update if its opacity or visibility changes.

 src/CMakeLists.txt                             |   8 +
 src/abstract_client.cpp                        |   8 +-
 src/abstract_client.h                          |   5 +-
 src/composite.cpp                              |  20 +-
 src/decorationitem.cpp                         |  35 ++
 src/decorationitem.h                           |  36 ++
 src/effects.cpp                                |   3 +-
 src/events.cpp                                 |   4 -
 src/internal_client.cpp                        |   5 +-
 src/item.cpp                                   | 345 ++++++++++++++++++++
 src/item.h                                     | 142 ++++++++
 src/plugins/scenes/opengl/scene_opengl.cpp     | 280 ++++++++--------
 src/plugins/scenes/opengl/scene_opengl.h       |   6 +-
 src/plugins/scenes/qpainter/scene_qpainter.cpp |  46 ++-
 src/plugins/scenes/qpainter/scene_qpainter.h   |   5 +-
 src/plugins/scenes/xrender/scene_xrender.cpp   |  26 +-
 src/scene.cpp                                  | 433 ++++++++-----------------
 src/scene.h                                    | 181 ++---------
 src/shadowitem.cpp                             |  46 +++
 src/shadowitem.h                               |  35 ++
 src/surfaceitem.cpp                            | 119 +++++++
 src/surfaceitem.h                              |  55 ++++
 src/surfaceitem_internal.cpp                   |  46 +++
 src/surfaceitem_internal.h                     |  34 ++
 src/surfaceitem_wayland.cpp                    | 151 +++++++++
 src/surfaceitem_wayland.h                      |  61 ++++
 src/surfaceitem_x11.cpp                        | 141 ++++++++
 src/surfaceitem_x11.h                          |  47 +++
 src/toplevel.cpp                               | 251 ++++----------
 src/toplevel.h                                 |  42 +--
 src/unmanaged.cpp                              |  53 +--
 src/unmanaged.h                                |   4 +-
 src/windowitem.cpp                             | 143 ++++++++
 src/windowitem.h                               |  90 +++++
 src/x11client.cpp                              |  31 +-
 src/x11client.h                                |   3 +-
 src/xwaylandclient.cpp                         |  19 +-
 37 files changed, 2015 insertions(+), 944 deletions(-)
 create mode 100644 src/decorationitem.cpp
 create mode 100644 src/decorationitem.h
 create mode 100644 src/item.cpp
 create mode 100644 src/item.h
 create mode 100644 src/shadowitem.cpp
 create mode 100644 src/shadowitem.h
 create mode 100644 src/surfaceitem.cpp
 create mode 100644 src/surfaceitem.h
 create mode 100644 src/surfaceitem_internal.cpp
 create mode 100644 src/surfaceitem_internal.h
 create mode 100644 src/surfaceitem_wayland.cpp
 create mode 100644 src/surfaceitem_wayland.h
 create mode 100644 src/surfaceitem_x11.cpp
 create mode 100644 src/surfaceitem_x11.h
 create mode 100644 src/windowitem.cpp
 create mode 100644 src/windowitem.h
Comment 5 Vlad Zahorodnii 2021-08-05 06:03:41 UTC
Git commit e94fbcd853fe4101c9d82b4df0803c7b6e97c0d4 by Vlad Zahorodnii.
Committed on 05/08/2021 at 06:03.
Pushed by vladz into branch 'master'.

Copy shape region to Deleted

Currently, the shape region is not copied to the Deleted. If either
SurfaceItemX11 or SurfaceItemXwayland needs to build quads for a shaped
window, it won't be able to do so properly because the corresponding
x11 window is long time gone.

If the shape region changes before the window is unmapped, you may still
see visual artifacts. Unfortunately, the only way to fix that bug is to
switch to wayland.
Related: bug 440001, bug 438458

M  +2    -0    src/toplevel.cpp

https://invent.kde.org/plasma/kwin/commit/e94fbcd853fe4101c9d82b4df0803c7b6e97c0d4
Comment 6 Vlad Zahorodnii 2021-08-05 06:04:10 UTC
Git commit ad62f7c3b7ba60182ae42d1573dae8fd57560ad7 by Vlad Zahorodnii.
Committed on 05/08/2021 at 06:03.
Pushed by vladz into branch 'Plasma/5.22'.

Copy shape region to Deleted

Currently, the shape region is not copied to the Deleted. If either
SurfaceItemX11 or SurfaceItemXwayland needs to build quads for a shaped
window, it won't be able to do so properly because the corresponding
x11 window is long time gone.

If the shape region changes before the window is unmapped, you may still
see visual artifacts. Unfortunately, the only way to fix that bug is to
switch to wayland.
Related: bug 440001, bug 438458


(cherry picked from commit e94fbcd853fe4101c9d82b4df0803c7b6e97c0d4)

M  +2    -0    src/toplevel.cpp

https://invent.kde.org/plasma/kwin/commit/ad62f7c3b7ba60182ae42d1573dae8fd57560ad7