Fix ansi responses not being handling in WSL.

This commit is contained in:
BDisp
2024-11-10 12:16:40 +00:00
parent 1680ec54d6
commit 6444cc07dd

View File

@@ -77,11 +77,16 @@ internal class NetEvents : IDisposable
return Console.ReadKey (intercept);
}
if (AnsiEscapeSequenceRequestUtils.IncompleteCkInfos is null && AnsiEscapeSequenceRequests.Statuses.Count > 0)
// The delay must be here because it may have a request response after a while
// In WSL it takes longer for keys to be available.
Task.Delay (100, cancellationToken).Wait (cancellationToken);
if (!Console.KeyAvailable && AnsiEscapeSequenceRequestUtils.IncompleteCkInfos is null && AnsiEscapeSequenceRequests.Statuses.Count > 0)
{
if (_retries > 1)
{
if (AnsiEscapeSequenceRequests.Statuses.TryPeek (out AnsiEscapeSequenceRequestStatus? seqReqStatus) && string.IsNullOrEmpty (seqReqStatus.AnsiRequest.AnsiEscapeSequenceResponse?.Response))
if (AnsiEscapeSequenceRequests.Statuses.TryPeek (out AnsiEscapeSequenceRequestStatus? seqReqStatus)
&& string.IsNullOrEmpty (seqReqStatus.AnsiRequest.AnsiEscapeSequenceResponse?.Response))
{
lock (seqReqStatus.AnsiRequest._responseLock)
{
@@ -102,11 +107,6 @@ internal class NetEvents : IDisposable
{
_retries = 0;
}
if (!_forceRead)
{
Task.Delay (100, cancellationToken).Wait (cancellationToken);
}
}
cancellationToken.ThrowIfCancellationRequested ();