@@ -130,7 +130,7 @@ public class AVD3Console : IDisposable, IAVD3Console {
130
130
131
131
private readonly bool canManipulateCursor ;
132
132
private int displaySkipCount ;
133
- private int maxTopCursorPos ;
133
+ private int maxTopCursorPos = 0 ;
134
134
private int jitterDisplayUpdateCount ;
135
135
private readonly Stopwatch perfWatch = new ( ) ;
136
136
@@ -177,12 +177,13 @@ public void StopProgressDisplay() {
177
177
progressBuilder . MarkFinished ( ) ;
178
178
179
179
progressBuilder . Reset ( this ) ;
180
- var cursorTop = Console . CursorTop ;
180
+ var cursorTop = canManipulateCursor ? Console . CursorTop : 0 ;
181
181
for ( int i = cursorTop ; i < maxTopCursorPos ; i ++ ) {
182
182
progressBuilder . AppendLine ( ) ;
183
183
}
184
184
Console . Write ( progressBuilder . Buffer ) ;
185
- Console . SetCursorPosition ( 0 , cursorTop ) ;
185
+ if ( canManipulateCursor )
186
+ Console . SetCursorPosition ( 0 , cursorTop ) ;
186
187
}
187
188
}
188
189
}
@@ -208,8 +209,11 @@ private void OnWriteProgress(object? _) {
208
209
var progressLineCountPrev = progressBuilder . ProgressLineCount ;
209
210
progressBuilder . Reset ( this ) ;
210
211
211
- maxTopCursorPos = Math . Max ( maxTopCursorPos , Console . CursorTop ) ;
212
- Console . SetCursorPosition ( 0 , Math . Max ( 0 , Console . CursorTop - progressLineCountPrev ) ) ;
212
+ if ( canManipulateCursor )
213
+ {
214
+ maxTopCursorPos = Math . Max ( maxTopCursorPos , Console . CursorTop ) ;
215
+ Console . SetCursorPosition ( 0 , Math . Max ( 0 , Console . CursorTop - progressLineCountPrev ) ) ;
216
+ }
213
217
214
218
string [ ] toWrite ;
215
219
lock ( this . toWrite ) {
@@ -231,7 +235,7 @@ private void OnWriteProgress(object? _) {
231
235
//}
232
236
if ( lines [ j ] . Length < progressBuilder . DisplayWidth ) {
233
237
progressBuilder . Buffer . Append ( ' ' , progressBuilder . DisplayWidth - lines [ j ] . Length ) ;
234
- } else if ( lines [ j ] . Length >= progressBuilder . ConsoleWidth ) {
238
+ } else if ( progressBuilder . DisplayWidth != 0 && lines [ j ] . Length >= progressBuilder . ConsoleWidth ) {
235
239
progressBuilder . Buffer . Append ( ' ' , Math . Max ( 0 , progressBuilder . DisplayWidth - 2 - lines [ j ] . Length % progressBuilder . DisplayWidth ) ) ;
236
240
}
237
241
@@ -290,10 +294,12 @@ public void WriteLine(IEnumerable<string> values) {
290
294
public IDisposable LockConsole ( ) {
291
295
progressTimer . Change ( Timeout . Infinite , Timeout . Infinite ) ;
292
296
Monitor . Enter ( progressWriteLock ) ;
293
- Console . SetCursorPosition ( 0 , maxTopCursorPos ) ;
297
+ if ( canManipulateCursor )
298
+ Console . SetCursorPosition ( 0 , maxTopCursorPos ) ;
294
299
295
300
return new ProxyDisposable ( ( ) => {
296
- maxTopCursorPos = Math . Max ( maxTopCursorPos , Console . CursorTop ) ;
301
+ if ( canManipulateCursor )
302
+ maxTopCursorPos = Math . Max ( maxTopCursorPos , Console . CursorTop ) ;
297
303
Monitor . Exit ( progressWriteLock ) ;
298
304
progressTimer . Change ( 500 , TickPeriod ) ;
299
305
} ) ;
0 commit comments