Compare commits

...

1 Commits

Author SHA1 Message Date
Geoffrey McRae
e13a6e9350 [client/obs] update LGMP to detect version missmatch since struct change 2026-07-15 17:17:39 +10:00
3 changed files with 25 additions and 6 deletions

View File

@@ -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");
}

View File

@@ -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 ||