Move the reusable named-pipe endpoint and shared support code into
the LGCommon static library.
Run a dedicated server in LGIdd and a reconnecting client in
LGInput, with device-lifecycle handling and report framing.
Refactor the helper pipe to use the same endpoint implementation.
Build LGInput as an independent UMDF driver with its own entry point,
service, tracing, and binary.
Expose absolute pointer, relative mouse, and keyboard collections with a
guarded report queue.
Keep LGIdd as the startup and deployment project. Give it a non-linking
build/package dependency on LGInput so F5 stages both driver stacks and
installs them together through LGIddInstall, while the two UMDF binaries
remain independent for future IPC.
Stage both DLLs for the NSIS installer, retain the WDK UMDF remote-debug
startup attachment, and move CSRWLock into LGCommon for the input
driver's report queue.
Move cadence and pipeline declarations under capture, and move local
named-pipe handling under ipc.
Flatten display contexts and rename files after their contained classes.
Keep transport headers limited to transport contracts and capabilities.
Consolidate CSwapChainProcessor definitions so each source file matches
the class it implements.
Introduce transport, frame, and control interfaces with an LGMP factory
backend.
Move LGMP and IVSHMEM implementation details under transport/lgmp and
expose direct frame-buffer memory through a neutral capability.
Group the IDD sources and Visual Studio filters by subsystem.
Split the device and swap-chain implementations into focused units,
rename the context classes, and reduce header coupling.
Move cadence-aware hardware capture and immediate software capture
behind a common frame processor interface.
Keep shared damage tracking and frame-buffer ownership in the base
processor, and move stateless format, resource, and rectangle helpers
into CFrameProcessorUtil.
Decouple frame-buffer resources from CSwapChainProcessor by passing the
device dependencies they use directly.
Honor the IddCx 3x4 XYZ matrix and post-transfer LUT in the IDD
conversion pipeline. Carry transform changes to the client so EGL applies
the same calibration to hardware cursors, and invalidate the full frame
whenever calibration changes.
Custom modes can now be configured via the registry under
HKEY_LOCAL_MACHINE\SOFTWARE\LookingGlass\IDD
Create the value "Modes" as a REG_MULTI_SZ with the value as
a list of modes, for example:
1024x768@60
1920x1080@60
1920x1080@120*
The '*' denotes the preferred mode to default to if one has not
been selected by the user.
As the IDD itself runs in a WUMDF sandbox, it doesn't have enough
access to perform interactive operations such as moving the cursor.
This helper service communicates with the IDD over a named pipe,
so that we can perform these things, as well as in the future provide
a configuration GUI.