[client] main: skip duplicate frames

When a new client connects to our session the host will repeat the last
valid frame for the new client. This change will detect this and skip
the duplicated frame.
This commit is contained in:
Geoffrey McRae 2021-07-25 13:44:39 +10:00
parent b39f38350f
commit 9dffde74b2

View File

@ -424,6 +424,7 @@ int main_frameThread(void * unused)
LGMP_STATUS status; LGMP_STATUS status;
PLGMPClientQueue queue; PLGMPClientQueue queue;
uint32_t frameSerial = 0;
uint32_t formatVer = 0; uint32_t formatVer = 0;
size_t dataSize = 0; size_t dataSize = 0;
LG_RendererFormat lgrFormat; LG_RendererFormat lgrFormat;
@ -495,6 +496,16 @@ int main_frameThread(void * unused)
} }
KVMFRFrame * frame = (KVMFRFrame *)msg.mem; KVMFRFrame * frame = (KVMFRFrame *)msg.mem;
// ignore any repeated frames, this happens when a new client connects to
// the same host application.
if (frame->frameSerial == frameSerial)
{
lgmpClientMessageDone(queue);
continue;
}
frameSerial = frame->frameSerial;
struct DMAFrameInfo *dma = NULL; struct DMAFrameInfo *dma = NULL;
if (!g_state.formatValid || frame->formatVer != formatVer) if (!g_state.formatValid || frame->formatVer != formatVer)