summaryrefslogtreecommitdiff
path: root/src/protocols/ServerDecorationKDE.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2025-09-04 10:16:54 +0100
committerVaxry <vaxry@vaxry.net>2025-09-04 10:16:54 +0100
commit4e785d12a91117cd5b255052799d1a051d9976c0 (patch)
treefd2babf32fc15f12d2c4fd36ea88c0d0ca11447c /src/protocols/ServerDecorationKDE.cpp
parent127aab815908ecbd3db4d23f127d2e96b79855f9 (diff)
protocols/kde-deco: fix tug of war in deco mode
fixes #11591
Diffstat (limited to 'src/protocols/ServerDecorationKDE.cpp')
-rw-r--r--src/protocols/ServerDecorationKDE.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/protocols/ServerDecorationKDE.cpp b/src/protocols/ServerDecorationKDE.cpp
index 8f625168..1db5a0c6 100644
--- a/src/protocols/ServerDecorationKDE.cpp
+++ b/src/protocols/ServerDecorationKDE.cpp
@@ -8,16 +8,20 @@ CServerDecorationKDE::CServerDecorationKDE(SP<COrgKdeKwinServerDecoration> resou
m_resource->setRelease([this](COrgKdeKwinServerDecoration* pMgr) { PROTO::serverDecorationKDE->destroyResource(this); });
m_resource->setOnDestroy([this](COrgKdeKwinServerDecoration* pMgr) { PROTO::serverDecorationKDE->destroyResource(this); });
m_resource->setRequestMode([this](COrgKdeKwinServerDecoration*, uint32_t mode) {
+ if (m_requestsSent > 3)
+ return; // don't start a tug of war
+
auto sendMode = kdeModeOnRequestCSD(mode);
m_resource->sendMode(sendMode);
- mostRecentlySent = sendMode;
- mostRecentlyRequested = mode;
+ m_mostRecentlySent = sendMode;
+ m_mostRecentlyRequested = mode;
+ m_requestsSent++;
});
// we send this and ignore request_mode.
auto sendMode = kdeDefaultModeCSD();
m_resource->sendMode(sendMode);
- mostRecentlySent = sendMode;
+ m_mostRecentlySent = sendMode;
}
bool CServerDecorationKDE::good() {