diff options
| author | Vaxry <vaxry@vaxry.net> | 2025-09-04 10:16:54 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2025-09-04 10:16:54 +0100 |
| commit | 4e785d12a91117cd5b255052799d1a051d9976c0 (patch) | |
| tree | fd2babf32fc15f12d2c4fd36ea88c0d0ca11447c /src/protocols/ServerDecorationKDE.cpp | |
| parent | 127aab815908ecbd3db4d23f127d2e96b79855f9 (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.cpp | 10 |
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() { |
