Improving performance on CheckWindowSizeChange.

This commit is contained in:
BDisp
2024-05-30 23:43:26 +01:00
parent 79192ed8c6
commit 8c500fcbb7

View File

@@ -328,14 +328,36 @@ internal class NetEvents : IDisposable
}
}
private void CheckWindowSizeChange ()
private async Task CheckWindowSizeChange ()
{
void RequestWindowSize (CancellationToken cancellationToken)
while (true)
{
if (_inputReadyCancellationTokenSource.IsCancellationRequested)
{
return;
}
try
{
_winChange.Wait (_inputReadyCancellationTokenSource.Token);
_winChange.Reset ();
await RequestWindowSize (_inputReadyCancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
return;
}
_inputReady.Set ();
}
async Task RequestWindowSize (CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
// Wait for a while then check if screen has changed sizes
Task.Delay (500, cancellationToken);
await Task.Delay (500, cancellationToken);
int buffHeight, buffWidth;
@@ -363,28 +385,6 @@ internal class NetEvents : IDisposable
cancellationToken.ThrowIfCancellationRequested ();
}
while (true)
{
if (_inputReadyCancellationTokenSource.IsCancellationRequested)
{
return;
}
try
{
_winChange.Wait (_inputReadyCancellationTokenSource.Token);
_winChange.Reset ();
RequestWindowSize (_inputReadyCancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
return;
}
_inputReady.Set ();
}
}
/// <summary>Enqueue a window size event if the window size has changed.</summary>