Blame kwin-5.17.patch

1cdbac3
diff --git a/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp.orig b/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp
1cdbac3
index 999f23b..b618c54 100644
1cdbac3
--- a/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp.orig
1cdbac3
+++ b/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp
1cdbac3
@@ -129,10 +129,6 @@ class Compositor : public QObject
1cdbac3
 public:
1cdbac3
     enum SuspendReason { NoReasonSuspend = 0, UserSuspend = 1<<0, BlockRuleSuspend = 1<<1, ScriptSuspend = 1<<2, AllReasonSuspend = 0xff };
1cdbac3
     static Compositor *s_compositor;
1cdbac3
-
1cdbac3
-public Q_SLOTS:
1cdbac3
-    void suspend(Compositor::SuspendReason reason);
1cdbac3
-    void resume(Compositor::SuspendReason reason);
1cdbac3
 };
1cdbac3
 
1cdbac3
 // 光标管理
1cdbac3
@@ -222,6 +218,7 @@ class KWinInterface
1cdbac3
     typedef xcb_cursor_t (*X11CursorGetCursor)(Qt::CursorShape);
1cdbac3
     typedef KWin::Options::WindowOperation (*OptionsWindowOperation)(const QString &, bool);
1cdbac3
     typedef QObject *(*WorkspaceFindClient)(KWinUtils::Predicate, xcb_window_t);
1cdbac3
+    typedef void (*CompositorToggle)(void *, KWin::Compositor::SuspendReason);
1cdbac3
 public:
1cdbac3
     KWinInterface()
1cdbac3
     {
1cdbac3
@@ -232,6 +229,8 @@ public:
1cdbac3
         x11CursorGetCursor = (X11CursorGetCursor)KWinUtils::resolve("_ZN4KWin6Cursor12getX11CursorEN2Qt11CursorShapeE");
1cdbac3
         optionsWindowOperation = (OptionsWindowOperation)KWinUtils::resolve("_ZN4KWin7Options15windowOperationERK7QStringb");
1cdbac3
         findClient = (WorkspaceFindClient)KWinUtils::resolve("_ZNK4KWin9Workspace10findClientENS_9PredicateEj");
1cdbac3
+        compositorSuspend = (CompositorToggle)KWinUtils::resolve("_ZN4KWin13X11Compositor7suspendENS0_13SuspendReasonE");
1cdbac3
+        compositorResume = (CompositorToggle)KWinUtils::resolve("_ZN4KWin13X11Compositor6resumeENS0_13SuspendReasonE");
1cdbac3
     }
1cdbac3
 
1cdbac3
     ClientMaximizeMode clientMaximizeMode;
1cdbac3
@@ -241,6 +240,8 @@ public:
1cdbac3
     X11CursorGetCursor x11CursorGetCursor;
1cdbac3
     OptionsWindowOperation optionsWindowOperation;
1cdbac3
     WorkspaceFindClient findClient;
1cdbac3
+    CompositorToggle compositorSuspend;
1cdbac3
+    CompositorToggle compositorResume;
1cdbac3
 };
1cdbac3
 
1cdbac3
 Q_GLOBAL_STATIC(KWinInterface, interface)
1cdbac3
@@ -609,18 +610,18 @@ void KWinUtils::ShowWorkspacesView()
1cdbac3
 
1cdbac3
 void KWinUtils::ResumeCompositor(int type)
1cdbac3
 {
1cdbac3
-    if (!KWin::Compositor::s_compositor)
1cdbac3
+    if (!KWin::Compositor::s_compositor || !interface->compositorResume)
1cdbac3
         return;
1cdbac3
 
1cdbac3
-    KWin::Compositor::s_compositor->resume(static_cast<KWin::Compositor::SuspendReason>(type));
1cdbac3
+    interface->compositorResume(KWin::Compositor::s_compositor, static_cast<KWin::Compositor::SuspendReason>(type));
1cdbac3
 }
1cdbac3
 
1cdbac3
 void KWinUtils::SuspendCompositor(int type)
1cdbac3
 {
1cdbac3
-    if (!KWin::Compositor::s_compositor)
1cdbac3
+    if (!KWin::Compositor::s_compositor || !interface->compositorSuspend)
1cdbac3
         return;
1cdbac3
 
1cdbac3
-    KWin::Compositor::s_compositor->suspend(static_cast<KWin::Compositor::SuspendReason>(type));
1cdbac3
+    interface->compositorSuspend(KWin::Compositor::s_compositor, static_cast<KWin::Compositor::SuspendReason>(type));
1cdbac3
 }
1cdbac3
 
1cdbac3
 void KWinUtils::ShowAllWindowsView()