Blob Blame History Raw
From 89b7cde3a6585abba6cf1f3efb8f12fae8bd16f2 Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Thu, 12 Nov 2020 19:12:30 +0800
Subject: [PATCH 3/6] build fix

---
 plugins/kwineffects/blur/blur.cpp                 | 15 +++++++++------
 plugins/kwineffects/blur/blur.h                   |  2 +-
 plugins/kwineffects/multitasking/data.qrc         |  4 ----
 plugins/kwineffects/multitasking/multitasking.cpp |  2 +-
 plugins/kwineffects/multitasking/multitasking.h   |  2 +-
 .../multitasking/translations/multitasking.ts     | 11 -----------
 .../translations/multitasking_zh_CN.ts            | 11 -----------
 .../kwineffects/scissor-window/scissorwindow.cpp  |  7 ++++---
 .../kwineffects/scissor-window/scissorwindow.h    |  2 +-
 9 files changed, 17 insertions(+), 39 deletions(-)
 delete mode 100644 plugins/kwineffects/multitasking/translations/multitasking.ts
 delete mode 100644 plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts

diff --git a/plugins/kwineffects/blur/blur.cpp b/plugins/kwineffects/blur/blur.cpp
index 9339a1fab..45b994c14 100644
--- a/plugins/kwineffects/blur/blur.cpp
+++ b/plugins/kwineffects/blur/blur.cpp
@@ -429,8 +429,8 @@ QRegion BlurEffect::expand(const QRegion &region) const
 {
     QRegion expanded;
 
-    for (const QRect &rect : region.rects()) {
-        expanded += expand(rect);
+    for (auto it = region.begin(); it != region.end(); ++it) {
+        expanded += expand(*it);
     }
 
     return expanded;
@@ -470,7 +470,8 @@ void BlurEffect::uploadRegion(QVector2D *&map, const QRegion &region, const int
     for (int i = 0; i <= downSampleIterations; i++) {
         const int divisionRatio = (1 << i);
 
-        for (const QRect &r : region.rects()) {
+        for (auto it = region.begin(); it != region.end(); ++it) {
+            const QRect& r = *it;
             const QVector2D topLeft(     r.x() / divisionRatio,               r.y() / divisionRatio);
             const QVector2D topRight(   (r.x() + r.width()) / divisionRatio,  r.y() / divisionRatio);
             const QVector2D bottomLeft(  r.x() / divisionRatio,              (r.y() + r.height()) / divisionRatio);
@@ -536,7 +537,8 @@ void BlurEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int t
     // to blur an area partially we have to shrink the opaque area of a window
     QRegion newClip;
     const QRegion oldClip = data.clip;
-    for (const QRect &rect : data.clip.rects()) {
+    for (auto it = data.clip.begin(); it != data.clip.end(); ++it) {
+        const QRect &rect = *it;
         newClip |= rect.adjusted(m_expandSize, m_expandSize, -m_expandSize, -m_expandSize);
     }
     data.clip = newClip;
@@ -623,7 +625,8 @@ void BlurEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPa
         if (scaled) {
             QPoint pt = shape.boundingRect().topLeft();
             QRegion scaledShape;
-            for (QRect r : shape.rects()) {
+            for (auto it = shape.cbegin(); it != shape.cend(); ++it) {
+                QRect r = *it;
                 r.moveTo(pt.x() + (r.x() - pt.x()) * data.xScale() + data.xTranslation(),
                             pt.y() + (r.y() - pt.y()) * data.yScale() + data.yTranslation());
                 r.setWidth(r.width() * data.xScale());
@@ -647,7 +650,7 @@ void BlurEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPa
     effects->drawWindow(w, mask, region, data);
 }
 
-void BlurEffect::paintEffectFrame(EffectFrame *frame, QRegion region, double opacity, double frameOpacity)
+void BlurEffect::paintEffectFrame(EffectFrame* frame, const QRegion &region, double opacity, double frameOpacity)
 {
     const QRect screen = effects->virtualScreenGeometry();
     bool valid = m_renderTargetsValid && m_shader && m_shader->isValid();
diff --git a/plugins/kwineffects/blur/blur.h b/plugins/kwineffects/blur/blur.h
index 7c76a8244..58889bc8a 100644
--- a/plugins/kwineffects/blur/blur.h
+++ b/plugins/kwineffects/blur/blur.h
@@ -58,7 +58,7 @@ public:
     void prePaintScreen(ScreenPrePaintData &data, int time) override;
     void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time) override;
     void paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override;
-    void paintEffectFrame(EffectFrame *frame, QRegion region, double opacity, double frameOpacity) override;
+    void paintEffectFrame(EffectFrame* frame, const QRegion &region, double opacity, double frameOpacity) override;
 
     bool provides(Feature feature) override;
 
diff --git a/plugins/kwineffects/multitasking/data.qrc b/plugins/kwineffects/multitasking/data.qrc
index 15f9d8029..d7572793d 100644
--- a/plugins/kwineffects/multitasking/data.qrc
+++ b/plugins/kwineffects/multitasking/data.qrc
@@ -21,8 +21,4 @@
         <file>data/unsticked_normal.svg</file>
         <file>data/unsticked_press.svg</file>
     </qresource>
-    <qresource prefix="/">
-        <file>translations/multitasking_zh_CN.qm</file>
-        <file>translations/multitasking.qm</file>
-    </qresource>
 </RCC>
diff --git a/plugins/kwineffects/multitasking/multitasking.cpp b/plugins/kwineffects/multitasking/multitasking.cpp
index 934f83dce..5580c291d 100644
--- a/plugins/kwineffects/multitasking/multitasking.cpp
+++ b/plugins/kwineffects/multitasking/multitasking.cpp
@@ -575,7 +575,7 @@ void MultitaskingEffect::prePaintScreen(ScreenPrePaintData &data, int time)
     effects->prePaintScreen(data, time);
 }
 
-void MultitaskingEffect::paintScreen(int mask, QRegion region, ScreenPaintData &data)
+void MultitaskingEffect::paintScreen(int mask, const QRegion& region, ScreenPaintData &data)
 {
     effects->paintScreen(mask, region, data);
 }
diff --git a/plugins/kwineffects/multitasking/multitasking.h b/plugins/kwineffects/multitasking/multitasking.h
index 5874abdcb..8ae78fc02 100644
--- a/plugins/kwineffects/multitasking/multitasking.h
+++ b/plugins/kwineffects/multitasking/multitasking.h
@@ -256,7 +256,7 @@ public:
 
     // Screen painting
     virtual void prePaintScreen(ScreenPrePaintData &data, int time) override;
-    virtual void paintScreen(int mask, QRegion region, ScreenPaintData &data) override;
+    virtual void paintScreen(int mask, const QRegion& region, ScreenPaintData &data) override;
     virtual void postPaintScreen() override;
 
     // Window painting
diff --git a/plugins/kwineffects/multitasking/translations/multitasking.ts b/plugins/kwineffects/multitasking/translations/multitasking.ts
deleted file mode 100644
index 40826e464..000000000
--- a/plugins/kwineffects/multitasking/translations/multitasking.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
-    <name>thumbmanager</name>
-    <message>
-        <source>Drag upwards to remove</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-</TS>
diff --git a/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts b/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts
deleted file mode 100644
index ffa9950f3..000000000
--- a/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="zh_CN">
-<context>
-    <name>thumbmanager</name>
-    <message>
-        <source>Drag upwards to remove</source>
-        <translation>向上拖拽删除</translation>
-    </message>
-</context>
-</TS>
diff --git a/plugins/kwineffects/scissor-window/scissorwindow.cpp b/plugins/kwineffects/scissor-window/scissorwindow.cpp
index c366a94f5..9205ff4db 100644
--- a/plugins/kwineffects/scissor-window/scissorwindow.cpp
+++ b/plugins/kwineffects/scissor-window/scissorwindow.cpp
@@ -189,21 +189,22 @@ ScissorWindow::ScissorWindow(QObject *, const QVariantList &)
     }
 }
 
-void ScissorWindow::drawWindow(KWin::EffectWindow *w, int mask, QRegion region, KWin::WindowPaintData &data)
+void ScissorWindow::drawWindow(KWin::EffectWindow *w, int mask, const QRegion& orig_region, KWin::WindowPaintData &data)
 {
     // 工作区特效会使用PAINT_WINDOW_LANCZOS绘制,此时不支持多次调用Effect::drawWindow,
     // 否则只会显示第一次调用绘制的内容, 因此在这种模式下禁用掉窗口裁剪特效
     if (!w->isPaintingEnabled() || (mask & PAINT_WINDOW_LANCZOS)) {
-        return Effect::drawWindow(w, mask, region, data);
+        return Effect::drawWindow(w, mask, orig_region, data);
     }
 
     MaskCache::TextureData mask_texture = MaskCache::instance()->getTextureByWindow(w);
 
     if (!mask_texture) {
-        return Effect::drawWindow(w, mask, region, data);
+        return Effect::drawWindow(w, mask, orig_region, data);
     }
 
     QRegion corner_region;
+    QRegion region = orig_region;
 
     if (!mask_texture->customMask) {
         const QRect window_rect = w->geometry();
diff --git a/plugins/kwineffects/scissor-window/scissorwindow.h b/plugins/kwineffects/scissor-window/scissorwindow.h
index f4e18f739..75a270a37 100644
--- a/plugins/kwineffects/scissor-window/scissorwindow.h
+++ b/plugins/kwineffects/scissor-window/scissorwindow.h
@@ -39,7 +39,7 @@ public:
 
     explicit ScissorWindow(QObject *parent = nullptr, const QVariantList &args = QVariantList());
 
-    void drawWindow(KWin::EffectWindow* w, int mask, QRegion region, KWin::WindowPaintData& data) override;
+    void drawWindow(KWin::EffectWindow* w, int mask, const QRegion& orig_region, KWin::WindowPaintData& data) override;
 
 private:
     KWin::GLShader *m_shader = nullptr;
-- 
2.26.2