Ensure the complete decoration texture gets repainted on recreation
Summary: When the decoration size changes the textures get recreated and need to be properly filled. So far KWin used the scheduled repaint geometry in this situation. If the decoration didn't schedule the complete geometry for repain there will be an empty area in the decoration texture. This change ensures that the complete texture gets repainted when they are recreated. Thus the decoration rendering is more fault tolerant towards potential bugs in the decoration. With no-compositing and XRender compositing this problem was not reproducable and already fault tolerant, so OpenGL just catches up with the other modes. BUG: 371735 FIXED-IN: 5.8.3 Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D3186
This commit is contained in:
parent
2e3c6c92e9
commit
37067f538e
1 changed files with 3 additions and 2 deletions
|
@ -2524,7 +2524,8 @@ void SceneOpenGLDecorationRenderer::render()
|
|||
if (scheduled.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
if (areImageSizesDirty()) {
|
||||
const bool dirty = areImageSizesDirty();
|
||||
if (dirty) {
|
||||
resizeTexture();
|
||||
resetImageSizesDirty();
|
||||
}
|
||||
|
@ -2537,7 +2538,7 @@ void SceneOpenGLDecorationRenderer::render()
|
|||
QRect left, top, right, bottom;
|
||||
client()->client()->layoutDecorationRects(left, top, right, bottom);
|
||||
|
||||
const QRect geometry = scheduled.boundingRect();
|
||||
const QRect geometry = dirty ? QRect(QPoint(0, 0), client()->client()->geometry().size()) : scheduled.boundingRect();
|
||||
|
||||
auto renderPart = [this](const QRect &geo, const QRect &partRect, const QPoint &offset, bool rotated = false) {
|
||||
if (geo.isNull()) {
|
||||
|
|
Loading…
Reference in a new issue