From 11b3ac00a89fc2e4bca9da1caacc27f9b15065d0 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Wed, 15 Jul 2026 17:10:26 +1000 Subject: [PATCH] [client/obs] update LGMP to detect version missmatch since struct change --- client/src/main.c | 5 ++++- obs/lg.c | 24 ++++++++++++++++++++---- repos/LGMP | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/client/src/main.c b/client/src/main.c index 94d12ad5..3174f333 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -1438,6 +1438,7 @@ static int lg_run(void) core_setGrab(true); uint32_t udataSize; + uint32_t remoteVersion; KVMFR *udata; int waitCount = 0; @@ -1462,7 +1463,7 @@ restart: } status = lgmpClientSessionInit(g_state.lgmp, &udataSize, (uint8_t **)&udata, - NULL); + NULL, &remoteVersion); switch(status) { case LGMP_OK: @@ -1480,6 +1481,8 @@ restart: "Please download and install the matching version." ); + DEBUG_INFO("LGMP host:%u client:%u", + remoteVersion, LGMP_PROTOCOL_VERSION); DEBUG_INFO("Waiting for you to upgrade the host application"); } diff --git a/obs/lg.c b/obs/lg.c index c73220a8..f4aa3354 100644 --- a/obs/lg.c +++ b/obs/lg.c @@ -490,15 +490,31 @@ static void lgUpdate(void * data, obs_data_t * settings) uint32_t udataSize; KVMFR * udata; - if (lgmpClientInit(this->shmDev.mem, this->shmDev.size, &this->lgmp) - != LGMP_OK) + LGMP_STATUS status; + if ((status = lgmpClientInit(this->shmDev.mem, this->shmDev.size, + &this->lgmp)) != LGMP_OK) + { + printf("lgmpClientInit: %s\n", lgmpStatusString(status)); return; + } usleep(200000); - if (lgmpClientSessionInit(this->lgmp, &udataSize, (uint8_t **)&udata, NULL) - != LGMP_OK) + uint32_t remoteVersion; + if ((status = lgmpClientSessionInit(this->lgmp, &udataSize, + (uint8_t **)&udata, NULL, &remoteVersion)) != LGMP_OK) + { + printf("lgmpClientSessionInit: %s", lgmpStatusString(status)); + if (status == LGMP_ERR_INVALID_VERSION) + { + printf("The host application is not compatible with this client\n"); + printf("Expected LGMP version %u but got %u\n", + LGMP_PROTOCOL_VERSION, remoteVersion); + printf("This is not a Looking Glass error, do not report this"); + } + printf("\n"); return; + } if (udataSize < sizeof(KVMFR) || memcmp(udata->magic, KVMFR_MAGIC, sizeof(udata->magic)) != 0 || diff --git a/repos/LGMP b/repos/LGMP index cee29332..149c7310 160000 --- a/repos/LGMP +++ b/repos/LGMP @@ -1 +1 @@ -Subproject commit cee29332212b40f54a57cf36e39d301c02c0ce07 +Subproject commit 149c731050d28c93532ee5ab4c84dfe6c2342f49