From 868504d22d5150eab6616a41620157cab2b8fb66 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Fri, 28 Mar 2025 23:18:17 +1100 Subject: [PATCH] [client] core: fix dynamic res switch race issue --- client/src/core.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/client/src/core.c b/client/src/core.c index 86ffed7f..fa38b97d 100644 --- a/client/src/core.c +++ b/client/src/core.c @@ -190,19 +190,27 @@ bool core_warpPointer(int x, int y, bool exiting) void core_updatePositionInfo(void) { - if (g_state.kvmfrFeatures & KVMFR_FEATURE_WINDOWSIZE) + if (g_state.pointerQueue && + g_state.kvmfrFeatures & KVMFR_FEATURE_WINDOWSIZE) { - const KVMFRWindowSize msg = { - .msg.type = KVMFR_MESSAGE_WINDOWSIZE, - .w = g_state.windowW, - .h = g_state.windowH - }; + static unsigned lastW = 0, lastH = 0; + if (lastW != g_state.windowW || lastH != g_state.windowH) + { + lastW = g_state.windowW; + lastH = g_state.windowH; - uint32_t serial; - LGMP_STATUS status; - if ((status = lgmpClientSendData(g_state.pointerQueue, - &msg, sizeof(msg), &serial)) != LGMP_OK) - DEBUG_WARN("Message send failed: %s", lgmpStatusString(status)); + const KVMFRWindowSize msg = { + .msg.type = KVMFR_MESSAGE_WINDOWSIZE, + .w = g_state.windowW, + .h = g_state.windowH + }; + + uint32_t serial; + LGMP_STATUS status; + if ((status = lgmpClientSendData(g_state.pointerQueue, + &msg, sizeof(msg), &serial)) != LGMP_OK) + DEBUG_WARN("Message send failed: %s", lgmpStatusString(status)); + } } if (!g_state.haveSrcSize)