@@ -391,6 +391,15 @@ void RunStartupStep( string statusKey, Action initializeAction )
391391 MainWindow . Show ( ) ;
392392 }
393393
394+ // Start the worker thread and the input polling timer before showing the modal
395+ // first-run wizard. The wizard's button-mapping recorder relies on DirectInput.OnInput,
396+ // which is only fired from PollDevices (driven by OnTimer). ShowDialog() runs a nested
397+ // dispatcher loop, so the timer and worker keep ticking while the wizard is open.
398+
399+ _workerThread . Start ( ) ;
400+
401+ _timer . Start ( ) ;
402+
394403#if ! ADMINBOXX
395404
396405 if ( showWindow && ! DataContext . DataContext . Instance . Settings . AppWizardHasRun )
@@ -429,10 +438,6 @@ void RunStartupStep( string statusKey, Action initializeAction )
429438
430439#endif
431440
432- _workerThread . Start ( ) ;
433-
434- _timer . Start ( ) ;
435-
436441 Simulator . Start ( ) ;
437442
438443 GC . Collect ( ) ;
@@ -2955,6 +2960,7 @@ private static void WorkerThread()
29552960 app . Commentary . Tick ( app ) ;
29562961 app . Wind . Tick ( app ) ;
29572962 app . SeatBeltTensioner . Tick ( app ) ;
2963+ app . CloudService . Tick ( app ) ;
29582964
29592965 app . GripOMeterWindow ? . Tick ( app ) ;
29602966 app . GapMonitorWindow ? . Tick ( app ) ;
@@ -3142,7 +3148,7 @@ public void UpdateGripOMeterWindowVisibility()
31423148 {
31433149 var settings = DataContext . DataContext . Instance . Settings ;
31443150
3145- if ( OverlaysDraggable || ( settings . OverlaysShowGripOMeterWindow && Simulator . IsConnected && Simulator . IsOnTrack ) )
3151+ if ( settings . OverlaysShowGripOMeterWindow && ( OverlaysDraggable || ( Simulator . IsConnected && ( Simulator . IsOnTrack || settings . OverlaysShowWhenOffTrack ) && ( ! Simulator . IsReplayPlaying || settings . OverlaysShowInReplayMode ) ) ) )
31463152 {
31473153 EnsureGripOMeterWindowExists ( ) ;
31483154
@@ -3163,7 +3169,7 @@ public void UpdateGapMonitorWindowVisibility()
31633169 {
31643170 var settings = DataContext . DataContext . Instance . Settings ;
31653171
3166- if ( OverlaysDraggable || ( settings . OverlaysShowGapMonitorWindow && Simulator . IsConnected && Simulator . IsOnTrack ) )
3172+ if ( settings . OverlaysShowGapMonitorWindow && ( OverlaysDraggable || ( Simulator . IsConnected && ( Simulator . IsOnTrack || settings . OverlaysShowWhenOffTrack ) && ( ! Simulator . IsReplayPlaying || settings . OverlaysShowInReplayMode ) ) ) )
31673173 {
31683174 EnsureGapMonitorWindowExists ( ) ;
31693175
@@ -3184,7 +3190,7 @@ public void UpdateDeltaMonitorWindowVisibility()
31843190 {
31853191 var settings = DataContext . DataContext . Instance . Settings ;
31863192
3187- if ( OverlaysDraggable || ( settings . OverlaysShowDeltaMonitorWindow && Simulator . IsConnected && Simulator . IsOnTrack ) )
3193+ if ( settings . OverlaysShowDeltaMonitorWindow && ( OverlaysDraggable || ( Simulator . IsConnected && ( Simulator . IsOnTrack || settings . OverlaysShowWhenOffTrack ) && ( ! Simulator . IsReplayPlaying || settings . OverlaysShowInReplayMode ) ) ) )
31883194 {
31893195 EnsureDeltaMonitorWindowExists ( ) ;
31903196
@@ -3205,7 +3211,7 @@ public void UpdateSpeechToTextWindowVisibility()
32053211 {
32063212 var settings = DataContext . DataContext . Instance . Settings ;
32073213
3208- if ( OverlaysDraggable )
3214+ if ( OverlaysDraggable && settings . SpeechToTextEnabled )
32093215 {
32103216 EnsureSpeechToTextWindowExists ( ) ;
32113217
0 commit comments