[idd] input: receive LGMP input reports

Add an optional input transport and a dedicated LGMP receiver that
validates source ownership, generations, ordered sequences, and leases.

Poll input outside the 10 ms control timer. Forward mouse and keyboard
state through the LGInput pipe, and neutralize the endpoint before
ownership changes or transport failures can leave input held.
This commit is contained in:
Geoffrey McRae
2026-08-08 22:46:07 +10:00
parent 7f4a14a543
commit 83c552fb9d
13 changed files with 1006 additions and 91 deletions

View File

@@ -49,7 +49,8 @@ static bool TranslateFrameScheduleFlags(
CLGMPTransport::CLGMPTransport() :
m_control(m_host),
m_frames(m_host, m_ivshmem)
m_frames(m_host, m_ivshmem),
m_input(m_host)
{
}
@@ -69,9 +70,10 @@ bool CLGMPTransport::Initialize()
if (!m_host.Initialize(m_ivshmem))
return false;
// Preserve the shared-memory layout: frame queues precede the pointer queue
// and its retained cursor and color-transform allocations.
if (!m_frames.Initialize() || !m_control.Initialize())
// Preserve the existing shared-memory layout by appending input after the
// frame and pointer queues and retained pointer state allocations.
if (!m_frames.Initialize() || !m_control.Initialize() ||
!m_input.Initialize())
return false;
m_frames.SealMemoryLayout();