diff --git a/decorations/decoratedclient.cpp b/decorations/decoratedclient.cpp --- a/decorations/decoratedclient.cpp +++ b/decorations/decoratedclient.cpp @@ -61,6 +61,9 @@ } const auto oldSize = m_clientSize; m_clientSize = m_client->clientSize(); + if (m_renderer) { + m_renderer->schedule(m_client->rect()); + } if (oldSize.width() != m_clientSize.width()) { emit decoratedClient->widthChanged(m_clientSize.width()); } diff --git a/plugins/scenes/opengl/scene_opengl.cpp b/plugins/scenes/opengl/scene_opengl.cpp --- a/plugins/scenes/opengl/scene_opengl.cpp +++ b/plugins/scenes/opengl/scene_opengl.cpp @@ -2562,11 +2562,10 @@ void SceneOpenGLDecorationRenderer::render() { const QRegion scheduled = getScheduled(); - const bool dirty = areImageSizesDirty(); - if (scheduled.isEmpty() && !dirty) { + if (scheduled.isEmpty()) { return; } - if (dirty) { + if (areImageSizesDirty()) { resizeTexture(); resetImageSizesDirty(); } @@ -2579,8 +2578,6 @@ QRect left, top, right, bottom; client()->client()->layoutDecorationRects(left, top, right, bottom); - const QRect geometry = dirty ? QRect(QPoint(0, 0), client()->client()->size()) : scheduled.boundingRect(); - // We pad each part in the decoration atlas in order to avoid texture bleeding. const int padding = 1; @@ -2634,6 +2631,8 @@ m_texture->update(image, (position + dirtyOffset - viewport.topLeft()) * image.devicePixelRatio()); }; + const QRect geometry = scheduled.boundingRect(); + const QPoint topPosition(padding, padding); const QPoint bottomPosition(padding, topPosition.y() + top.height() + 2 * padding); const QPoint leftPosition(padding, bottomPosition.y() + bottom.height() + 2 * padding); diff --git a/plugins/scenes/xrender/scene_xrender.cpp b/plugins/scenes/xrender/scene_xrender.cpp --- a/plugins/scenes/xrender/scene_xrender.cpp +++ b/plugins/scenes/xrender/scene_xrender.cpp @@ -1229,7 +1229,6 @@ if (areImageSizesDirty()) { resizePixmaps(); resetImageSizesDirty(); - scheduled = client()->client()->decorationRect(); } const QRect top(QPoint(0, 0), m_sizes[int(DecorationPart::Top)]);