From f3a6964ade22a3a9d4e12e563c69d1ff5c3dedb7 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Mon, 24 Aug 2026 13:17:51 +1000 Subject: [PATCH] [client] lgmp: align cursor transform snapshots --- client/transports/LGMP/lgmp.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/transports/LGMP/lgmp.c b/client/transports/LGMP/lgmp.c index aef50b8e..79659da0 100644 --- a/client/transports/LGMP/lgmp.c +++ b/client/transports/LGMP/lgmp.c @@ -155,8 +155,9 @@ struct LG_Transport struct LGMPFrameLease frameLease[LGMP_FRAME_LEASE_COUNT]; struct DMAFrameInfo dma[LGMP_Q_FRAME_BUFFER_LEN]; - uint8_t * pointerData; - size_t pointerDataSize; + uint8_t * pointerData; + size_t pointerDataSize; + KVMFRColorTransform pointerColorTransform; size_t lgmpSize; KVMFRR * recovery; @@ -2397,7 +2398,13 @@ static LG_TransportStatus lgmp_nextPointer(LG_Transport * this, transformSize > payloadSize - shapeSize)) status = LG_TRANSPORT_ERROR; else if (status == LG_TRANSPORT_OK) + { pointerFlags = (uint32_t)message.udata; + if (transformSize) + memcpy(&this->pointerColorTransform, + (const uint8_t *)(cursor + 1) + shapeSize, + sizeof(this->pointerColorTransform)); + } } const LG_TransportStatus done = @@ -2481,8 +2488,7 @@ static LG_TransportStatus lgmp_nextPointer(LG_Transport * this, result->sdrWhiteLevel = cursor->sdrWhiteLevel; result->shape = (const uint8_t *)(cursor + 1); if (transformSize) - result->colorTransform = (const LGColorTransform *)(result->shape + - shapeSize); + result->colorTransform = &this->pointerColorTransform; lgmp_releaseVideoStatusLifetime(this); return LG_TRANSPORT_OK; }