[effects/thumbnailaside] Specify screen projection matrix

Summary:
The Lanczos filter is applied to thumbnails, so we need to specify screen
projection matrix in order to properly project window coordinates into
screen-space.

BUG: 407485

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21224
This commit is contained in:
Vlad Zagorodniy 2019-05-15 12:04:12 +03:00
parent 67b2746ecd
commit d94eb29d07

View file

@ -23,10 +23,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// KConfigSkeleton // KConfigSkeleton
#include "thumbnailasideconfig.h" #include "thumbnailasideconfig.h"
#include <QAction>
#include <KGlobalAccel> #include <KGlobalAccel>
#include <KLocalizedString> #include <KLocalizedString>
#include <QAction>
#include <QMatrix4x4>
namespace KWin namespace KWin
{ {
@ -62,9 +64,11 @@ void ThumbnailAsideEffect::paintScreen(int mask, QRegion region, ScreenPaintData
{ {
painted = QRegion(); painted = QRegion();
effects->paintScreen(mask, region, data); effects->paintScreen(mask, region, data);
const QMatrix4x4 projectionMatrix = data.projectionMatrix();
foreach (const Data & d, windows) { foreach (const Data & d, windows) {
if (painted.intersects(d.rect)) { if (painted.intersects(d.rect)) {
WindowPaintData data(d.window); WindowPaintData data(d.window, projectionMatrix);
data.multiplyOpacity(opacity); data.multiplyOpacity(opacity);
QRect region; QRect region;
setPositionTransformations(data, region, d.window, d.rect, Qt::KeepAspectRatio); setPositionTransformations(data, region, d.window, d.rect, Qt::KeepAspectRatio);