|
|
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()
|