[idd] recovery: restore fallback display

Add a protocol-independent recovery channel outside LGMP so clients can
request a usable guest display even when transport versions differ.

Synchronize recovery state with the helper across driver restarts and
restore the configured topology without persisting temporary changes.
This commit is contained in:
Geoffrey McRae
2026-08-11 23:31:11 +10:00
parent 9898e9bcec
commit bacf376305
18 changed files with 1290 additions and 57 deletions

View File

@@ -33,17 +33,25 @@ private:
CPipeEndpoint m_endpoint;
CSRWLock m_displayLock;
bool m_recoveryActive = false;
bool m_hasRecoveryStatus = false;
LGPipeMsg m_recoveryStatus = {};
void WriteMsg(const LGPipeMsg& msg);
void SetActiveDesktop();
bool EnsureOnlyDisplayLocked();
uint32_t RestoreSavedTopologyLocked() const;
uint32_t RestoreLGTopologyLocked();
void HandleSetCursorPos(const LGPipeMsg& msg);
void HandleSetDisplayMode(const LGPipeMsg& msg);
void HandleGPUStatus(const LGPipeMsg& msg);
void HandleResolutionRejected(const LGPipeMsg& msg);
void HandleSetRecovery(const LGPipeMsg& msg);
void OnPipeConnected() override;
bool ShouldReconnect() override;
bool OnPipeMessage(const void * message, size_t size) override;