From 23f45b67805dc00878eae5ff4d1eae71a96d2bc0 Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Thu, 12 Nov 2020 19:13:48 +0800
Subject: [PATCH 4/6] unload blur
---
plugins/kwineffects/blur/blur.cpp | 24 ++++++++++++++----------
plugins/kwineffects/blur/blur.h | 1 +
2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/plugins/kwineffects/blur/blur.cpp b/plugins/kwineffects/blur/blur.cpp
index 45b994c14..470bef12f 100644
--- a/plugins/kwineffects/blur/blur.cpp
+++ b/plugins/kwineffects/blur/blur.cpp
@@ -41,16 +41,7 @@ static const QByteArray s_blurAtomName = QByteArrayLiteral("_KDE_NET_WM_BLUR_BEH
BlurEffect::BlurEffect(QObject *, const QVariantList &)
{
- // 禁用kwin自己的模糊特效,防止两个特效之间出现冲突
- {
- bool blur_loaded = false;
- QMetaObject::invokeMethod(effects, "isEffectLoaded", Qt::DirectConnection, Q_RETURN_ARG(bool, blur_loaded), Q_ARG(QString, "blur"));
-
- if (blur_loaded) {
- // qWarning() << "will try unload builtIn blur effect of kwin";
- QMetaObject::invokeMethod(effects, "unloadEffect", Qt::DirectConnection, Q_ARG(QString, "blur"));
- }
- }
+ unloadBuiltinBlur();
m_shader = new BlurShader(this);
@@ -690,8 +681,21 @@ void BlurEffect::generateNoiseTexture()
m_noiseTexture.setWrapMode(GL_REPEAT);
}
+void BlurEffect::unloadBuiltinBlur()
+// 禁用kwin自己的模糊特效,防止两个特效之间出现冲突
+{
+ bool blur_loaded = false;
+ QMetaObject::invokeMethod(effects, "isEffectLoaded", Qt::DirectConnection, Q_RETURN_ARG(bool, blur_loaded), Q_ARG(QString, "blur"));
+
+ if (blur_loaded) {
+ qWarning() << "will try unload builtIn blur effect of kwin";
+ QMetaObject::invokeMethod(effects, "unloadEffect", Qt::DirectConnection, Q_ARG(QString, "blur"));
+ }
+}
+
void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float opacity, const QMatrix4x4 &screenProjection, bool isDock, QRect windowRect)
{
+ unloadBuiltinBlur();
// Blur would not render correctly on a secondary monitor because of wrong coordinates
// BUG: 393723
const int xTranslate = -screen.x();
diff --git a/plugins/kwineffects/blur/blur.h b/plugins/kwineffects/blur/blur.h
index 58889bc8a..441441c85 100644
--- a/plugins/kwineffects/blur/blur.h
+++ b/plugins/kwineffects/blur/blur.h
@@ -88,6 +88,7 @@ private:
void uploadRegion(QVector2D *&map, const QRegion ®ion, const int downSampleIterations);
void uploadGeometry(GLVertexBuffer *vbo, const QRegion &blurRegion, const QRegion &windowRegion);
void generateNoiseTexture();
+ void unloadBuiltinBlur();
void upscaleRenderToScreen(GLVertexBuffer *vbo, int vboStart, int blurRectCount, QMatrix4x4 screenProjection, QPoint windowPosition);
void downSampleTexture(GLVertexBuffer *vbo, int blurRectCount);
--
2.26.2