Вы можете использовать Отладчик Microsoft Visual Studio .NET/C/C++ (vsdbg) только с программным обеспечением Visual Studio Code, Visual Studio или Visual Studio для Mac для помощи в разработке и тестировании приложений.
[19:19:22.650] [INF] === LOGGER INITIALIZED === Path: C:\Users\paralax\AppData\Roaming\LMP\Logs [19:19:22.654] [INF] LMP starting... [19:19:22.772] [INF] [Bootstrap] Loaded: lang=ru [19:19:22.796] [INF] Configuring services... [19:19:22.800] [INF] Services registered. [19:19:23.630] [INF] [DB] Schema migration complete [19:19:23.641] [INF] [DB] Schema migration complete Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll LogHost: Initializing to normal mode (.cctor) Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll [19:19:24.933] [INF] LocalizationService created (deferred) Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll [19:19:25.215] [INF] Framework initialization completed. [19:19:25.231] [INF] Theme 'Paralax Purple' applied. [19:19:25.240] [INF] ✓ Loaded ru.json (564 keys) [19:19:25.240] [INF] LocalizationService initialized: ru [19:19:25.240] [INF] Localization: ru Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll Вызвано исключение: "System.IO.FileNotFoundException" в System.Private.CoreLib.dll [19:19:25.606] [INF] [Splash] Version: #207-dev (a2e314a) • 2026-03-03 [19:19:26.425] [DBG] [AudioCache] Loaded 11 entries [19:19:26.426] [INF] [AudioCache] Initialized: C:\Users\paralax\AppData\Local\LMP\AudioCache, max=2048MB, entries=11 [19:19:26.428] [INF] [AudioSourceFactory] Global cache initialized [19:19:26.871] [INF] [TrackRegistry] Hydrating from database... [19:19:27.031] [INF] [TrackRegistry] Hydrated 572 pinned tracks in 160ms [19:19:27.032] [INF] [TrackRegistry] Subscribed to AudioCache events [19:19:27.048] [INF] [LibraryService] Initialized in 606ms [19:19:27.049] [INF] [NotificationService] Initialized [19:19:27.069] [INF] [NotificationService] Loaded 7 notifications from DB [19:19:27.069] [INF] [Startup] NotificationService history loaded [19:19:27.073] [INF] [Auth] Profile restored from cache: Guest (updated: 01.01.0001 0:00) [19:19:27.084] [INF] [YouTube] Client reloaded. Auth: True [19:19:27.086] [INF] [AudioSourceFactory] Config updated: chunk=128KB, concurrent=3, readAhead=4 [19:19:27.087] [INF] [AudioEngine] Streaming profile: Medium [19:19:27.089] [INF] [AudioPlayer] Created with actor model + shared backend [19:19:27.094] [INF] [AudioEngine] Ready. Volume=90% [19:19:27.095] [INF] [PlaybackErrorOrchestrator] Subscribed to AudioEngine.OnErrorOccurred (handler count verification) [19:19:27.095] [INF] [PlaybackErrorOrchestrator] Initialized and ready [19:19:27.095] [INF] [Startup] PlaybackErrorOrchestrator ready [19:19:27.105] [INF] [YouTube] Fetching fresh Visitor Data for auth session... [19:19:27.562] [INF] [YouTube] Visitor Data synchronized: Cgt1SzNzT3dNUFphQSjw25vNBjIKCgJSVRIEGgAgM2LfAgrcAjE2LllUPVhpWjdyOXJtWnpDZXhxaGp1a1JoaEhtUjRKSFJubWhNY3dpWXFPRE1hU3cyVjQ0elFpWWZrNFJuN2F5ZjFRaW1va0pSZ2dfeTluX3dFMHVnM1hRMWJDR21pc3NaVXVJV0tmS1VPb3ZDeFlBMzdaLUotcjRiby1WMk5sT0hsZEl3cDNyZTdKUDBTYnBOd0NWam91YmxKYXJFM0JWV1kwTjVZSGh2M3lQVEJTQ2dfdkZSVkpyQWljZlN2ODRSSHlYcjh4b0pvUUdBQ19xQ2owWU02Yk11S0k2Q3otTHI5QlJlc2p4Vy05Ui02dU4wR2xHM1otUm55VXlLaWdvZENlUFhEYVhPS0I0TU1BTkxUUHdwNTdUVlNiZ1Itc1NtS09LamdLTHN6ZG9JcDN5eEF1Wjg3UDFnanFBMnZJLUxJU2NVbVcwcGZWUno4enVaSGRXb1l3NndoUQ%3D%3D [19:19:27.563] [INF] [YouTube] Initialized [19:19:27.567] [DBG] [PlayerControl] Service initialized [19:19:27.569] [DBG] [PlayerBar] Created, initializing... [19:19:27.573] [INF] [PlayerBar] Initialized: Vol=90, MaxVol=100, AutoShuffle=True, Repeat=All [19:19:27.755] [INF] [PlayerBar] Initialization complete [19:19:27.762] [INF] MainWindowViewModel constructor started. [19:19:27.766] [INF] Switching to page: Home [19:19:27.847] [INF] Page 'Home' VM created in 81ms, scheduling deferred init... [19:19:27.849] [INF] MainWindowViewModel initialized. [19:19:28.075] [DBG] [TrayManager] Icon shown (legacy mode, no V4) [19:19:28.079] [DBG] [Tray] Windows TrayManager created, icon always visible [19:19:28.081] [INF] [Tray] Tray icon configured successfully [19:19:28.708] [INF] [Navigation] Deferred init for 'Home' completed in 574ms [19:19:28.977] [INF] Main window ready. Total splash time: 2726ms [19:19:29.755] [DBG] [Lifecycle] Level change: None → Soft (requested=Soft, forceOptimize=True), VMs=15 [19:19:29.763] [DBG] [PlayerBar] Suspended (level=Soft): heavy subscriptions disposed [19:19:29.763] [DBG] [Lifecycle] Level change complete. Current=Soft [19:19:29.764] [DBG] [MemoryDiag] Monitoring interval: 15s [19:19:29.765] [DBG] [Window] App deactivated, suspend level applied. [19:19:30.172] [INF] [Auth] Session validated successfully [19:21:29.776] [INF] [Memory] Normal cleanup: 53 MB [19:22:19.987] [DBG] [Lifecycle] Level change: Soft → None (requested=None, forceOptimize=True), VMs=15 [19:22:19.988] [DBG] [PlayerBar] OnResume called (previousLevel=Soft) [19:22:19.991] [DBG] [PlayerBar] Resumed: heavy subscriptions recreated [19:22:19.991] [DBG] [Lifecycle] Level change complete. Current=None [19:22:19.991] [DBG] [MemoryDiag] Monitoring interval: 5s [19:22:19.991] [DBG] [Window] App activated, suspend level lifted. [19:22:21.470] [INF] Switching to page: Library [19:22:21.482] [INF] Page 'Library' VM created in 11ms, scheduling deferred init... [19:22:21.749] [DBG] [HomeVM] Disposing [19:22:21.749] [DBG] [PaginatedVM] Disposing [19:22:21.762] [DBG] [Navigation] Disposed old page: Home [19:22:21.813] [INF] [Navigation] Deferred init for 'Library' completed in 115ms [19:22:23.052] [INF] Navigating to Playlist: yt_PL5gz6QyF1RQJBfx7KwPMzrAQRwu8GURna [19:22:23.420] [DBG] [Navigation] Disposed old page: Library [19:22:24.429] [DBG] [PlayerControl] ShuffleEnabled set to False [19:22:24.587] [DBG] [PlayerBar] BeginTrackReset: session=1 [19:22:24.587] [DBG] [PlayerBar] New track: yt_yOuj_v6zU6Q [19:22:24.598] [INF] [YouTube] [yOuj_v6zU6Q] Getting stream URL... [19:22:24.761] [INF] GetPlayerResponse START (ANDROID_VR): yOuj_v6zU6Q [19:22:25.289] [INF] [VideoController] [yOuj_v6zU6Q] SUCCESS with ANDROID_VR [19:22:25.303] [INF] [YouTube] [yOuj_v6zU6Q] Stream: Opus/187kbps in 705ms [19:22:25.315] [INF] [AudioPlayer] Play: yt_yOuj_v6zU6Q, bitrate hint: 187 [19:22:25.330] [INF] [AudioSourceFactory] Streaming WebM/Opus/187kbps: yt_yOuj_v6zU6Q_WebM_256 [19:22:25.341] [DBG] [CachingSource] Chunk 0: GET rn=1, range=0-131071 [19:22:25.346] [DBG] [CachingSource] Chunk 1: GET rn=2, range=131072-262143 [19:22:25.346] [DBG] [CachingSource] Chunk 2: GET rn=3, range=262144-393215 [19:22:25.822] [INF] [CachingSource] Initialized: duration=114441ms, cached=18% [19:22:25.846] [DBG] [OpusDecoder] Created: 48000Hz, 2ch Вызвано исключение: "NAudio.MmException" в NAudio.Core.dll Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в LMP.dll Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в System.Private.CoreLib.dll Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в LMP.dll Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в System.Private.CoreLib.dll Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в System.Private.CoreLib.dll [19:22:26.003] [ERR] [AudioPlayer] Play failed: Failed to initialize audio source
EXCEPTION: LMP.Core.Exceptions.AudioSourceException: Failed to initialize audio source ---> NAudio.MmException: BadDeviceId calling waveOutOpen at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutEvent.Init(IWaveProvider waveProvider) at LMP.Core.Audio.Backends.NAudioBackend.CreateWaveOut(Int32 sampleRate, Int32 channels) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 618 at LMP.Core.Audio.Backends.NAudioBackend.Initialize(Int32 sampleRate, Int32 channels, AudioDataCallback dataCallback) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 204 at LMP.Core.Audio.Backends.NAudioBackend.Reinitialize(Int32 sampleRate, Int32 channels, AudioDataCallback dataCallback) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 219 at LMP.Core.Audio.AudioPipeline.CreateAsync(String url, String trackId, Int32 bitrateHint, Func
2 urlRefresher, AudioPlayerOptions options, IPlaybackBackend sharedBackend, CancellationToken ct) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 178 --- End of inner exception stack trace --- at LMP.Core.Audio.AudioPipeline.CreateAsync(String url, String trackId, Int32 bitrateHint, Func2 urlRefresher, AudioPlayerOptions options, IPlaybackBackend sharedBackend, CancellationToken ct) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 196 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 470 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:22:26.040] [DBG] [AudioEngine] RaiseError: AudioSourceException [19:22:26.234] [INF] [Orchestrator] ◆ Received error event: AudioSourceException: Failed to initialize audio source [19:22:26.254] [ERR] [AudioPlayer] Command error: Failed to initialize audio source EXCEPTION: LMP.Core.Exceptions.AudioSourceException: Failed to initialize audio source ---> NAudio.MmException: BadDeviceId calling waveOutOpen at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutEvent.Init(IWaveProvider waveProvider) at LMP.Core.Audio.Backends.NAudioBackend.CreateWaveOut(Int32 sampleRate, Int32 channels) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 618 at LMP.Core.Audio.Backends.NAudioBackend.Initialize(Int32 sampleRate, Int32 channels, AudioDataCallback dataCallback) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 204 at LMP.Core.Audio.Backends.NAudioBackend.Reinitialize(Int32 sampleRate, Int32 channels, AudioDataCallback dataCallback) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 219 at LMP.Core.Audio.AudioPipeline.CreateAsync(String url, String trackId, Int32 bitrateHint, Func2 urlRefresher, AudioPlayerOptions options, IPlaybackBackend sharedBackend, CancellationToken ct) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 178 --- End of inner exception stack trace --- at LMP.Core.Audio.AudioPipeline.CreateAsync(String url, String trackId, Int32 bitrateHint, Func2 urlRefresher, AudioPlayerOptions options, IPlaybackBackend sharedBackend, CancellationToken ct) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 196 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 470 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:22:26.255] [DBG] [AudioEngine] RaiseError: AudioSourceException [19:22:26.256] [INF] [Orchestrator] Handling: AudioSourceException [19:22:26.257] [ERR] [Orchestrator] Generic error: Failed to initialize audio source [19:22:26.275] [INF] [Orchestrator] ◆ Received error event: AudioSourceException: Failed to initialize audio source [19:22:26.275] [DBG] [Orchestrator] Skipping duplicate error: generic_AudioSourceException_-217291177 Вызвано исключение: "LMP.Core.Exceptions.AudioSourceException" в System.Private.CoreLib.dll [19:22:26.361] [ERR] [AudioEngine] Play error: AudioSourceException: Failed to initialize audio source [19:22:26.361] [DBG] [AudioEngine] RaiseError: AudioSourceException [19:22:26.361] [INF] [Orchestrator] ◆ Received error event: AudioSourceException: Failed to initialize audio source [19:22:26.361] [DBG] [Orchestrator] Skipping duplicate error: generic_AudioSourceException_-217291177 [19:22:26.649] [DBG] [AudioPlayer] Stop [19:22:26.650] [DBG] [NAudioBackend] Flushed [19:22:26.650] [DBG] [PlayerBar] BeginTrackReset: session=2 [19:22:26.650] [DBG] [PlayerBar] New track: yt_o5hD5w2kE_I [19:22:26.652] [DBG] [AudioEngine] Using cache: WebM/134kbps [19:22:26.654] [INF] [AudioPlayer] Play: yt_o5hD5w2kE_I, bitrate hint: 134 [19:22:26.654] [INF] [AudioSourceFactory] Using cached: yt_o5hD5w2kE_I (WebM/134kbps) [19:22:26.668] [INF] [LocalFileSource] Initialized: duration=184021ms, codec=Opus, size=2953KB [19:22:26.668] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:22:26.669] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:22:26.669] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/134kbps Вызвано исключение: "NAudio.MmException" в NAudio.Core.dll Вызвано исключение: "NAudio.MmException" в LMP.dll Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll [19:22:26.686] [ERR] [AudioPlayer] Play failed: BadDeviceId calling waveOutSetVolume EXCEPTION: NAudio.MmException: BadDeviceId calling waveOutSetVolume at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutUtils.SetWaveOutVolume(Single value, IntPtr hWaveOut, Object lockObject) at NAudio.Wave.WaveOutEvent.set_Volume(Single value) at LMP.Core.Audio.Backends.NAudioBackend.set_Volume(Single value) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 174 at LMP.Core.Audio.AudioPipeline.SetVolume(Single volume) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 746 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 487 [19:22:26.686] [DBG] [AudioEngine] RaiseError: MmException [19:22:26.722] [ERR] [AudioPlayer] Command error: BadDeviceId calling waveOutSetVolume EXCEPTION: NAudio.MmException: BadDeviceId calling waveOutSetVolume at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutUtils.SetWaveOutVolume(Single value, IntPtr hWaveOut, Object lockObject) at NAudio.Wave.WaveOutEvent.set_Volume(Single value) at LMP.Core.Audio.Backends.NAudioBackend.set_Volume(Single value) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 174 at LMP.Core.Audio.AudioPipeline.SetVolume(Single volume) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 746 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 487 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:22:26.722] [DBG] [AudioEngine] RaiseError: MmException [19:22:26.725] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:26.725] [INF] [Orchestrator] Handling: MmException [19:22:26.725] [ERR] [Orchestrator] Generic error: BadDeviceId calling waveOutSetVolume [19:22:26.726] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:26.726] [DBG] [Orchestrator] Skipping duplicate error: generic_MmException_805499282 Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll [19:22:26.763] [ERR] [AudioEngine] Play error: MmException: BadDeviceId calling waveOutSetVolume [19:22:26.763] [DBG] [AudioEngine] RaiseError: MmException [19:22:26.763] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:26.763] [DBG] [Orchestrator] Skipping duplicate error: generic_MmException_805499282 [19:22:26.956] [DBG] [Lifecycle] Level change: None → Soft (requested=Soft, forceOptimize=True), VMs=57 [19:22:26.957] [DBG] [PlayerBar] Suspended (level=Soft): heavy subscriptions disposed [19:22:26.957] [DBG] [Lifecycle] Level change complete. Current=Soft [19:22:26.957] [DBG] [MemoryDiag] Monitoring interval: 15s [19:22:26.957] [DBG] [Window] App deactivated, suspend level applied. [19:22:27.014] [DBG] [AudioPlayer] Stop [19:22:27.014] [DBG] [NAudioBackend] Flushed [19:22:27.015] [DBG] [PlayerBar] BeginTrackReset: session=3 [19:22:27.015] [DBG] [PlayerBar] New track: yt_92BTVy78P0E [19:22:27.016] [INF] [YouTube] [92BTVy78P0E] Getting stream URL... [19:22:27.173] [INF] GetPlayerResponse START (ANDROID_VR): 92BTVy78P0E [19:22:27.324] [INF] [VideoController] [92BTVy78P0E] SUCCESS with ANDROID_VR [19:22:27.325] [INF] [YouTube] [92BTVy78P0E] Stream: Opus/140kbps in 309ms [19:22:27.327] [INF] [AudioPlayer] Play: yt_92BTVy78P0E, bitrate hint: 140 [19:22:27.327] [INF] [AudioSourceFactory] Streaming WebM/Opus/140kbps: yt_92BTVy78P0E_WebM_160 [19:22:27.327] [DBG] [CachingSource] Chunk 0: GET rn=1, range=0-131071 [19:22:27.327] [DBG] [CachingSource] Chunk 1: GET rn=2, range=131072-262143 [19:22:27.327] [DBG] [CachingSource] Chunk 2: GET rn=3, range=262144-393215 [19:22:27.762] [INF] [CachingSource] Initialized: duration=154021ms, cached=15% [19:22:27.762] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:22:27.762] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:22:27.762] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/140kbps Вызвано исключение: "NAudio.MmException" в NAudio.Core.dll Вызвано исключение: "NAudio.MmException" в LMP.dll Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll [19:22:27.789] [ERR] [AudioPlayer] Play failed: BadDeviceId calling waveOutSetVolume EXCEPTION: NAudio.MmException: BadDeviceId calling waveOutSetVolume at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutUtils.SetWaveOutVolume(Single value, IntPtr hWaveOut, Object lockObject) at NAudio.Wave.WaveOutEvent.set_Volume(Single value) at LMP.Core.Audio.Backends.NAudioBackend.set_Volume(Single value) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 174 at LMP.Core.Audio.AudioPipeline.SetVolume(Single volume) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 746 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 487 [19:22:27.789] [DBG] [AudioEngine] RaiseError: MmException [19:22:27.968] [ERR] [AudioPlayer] Command error: BadDeviceId calling waveOutSetVolume EXCEPTION: NAudio.MmException: BadDeviceId calling waveOutSetVolume at NAudio.MmException.Try(MmResult result, String function) at NAudio.Wave.WaveOutUtils.SetWaveOutVolume(Single value, IntPtr hWaveOut, Object lockObject) at NAudio.Wave.WaveOutEvent.set_Volume(Single value) at LMP.Core.Audio.Backends.NAudioBackend.set_Volume(Single value) in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 174 at LMP.Core.Audio.AudioPipeline.SetVolume(Single volume) in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 746 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 487 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:22:27.968] [DBG] [AudioEngine] RaiseError: MmException [19:22:27.969] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:27.969] [DBG] [Orchestrator] Skipping duplicate error: generic_MmException_805499282 [19:22:27.969] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:27.969] [DBG] [Orchestrator] Skipping duplicate error: generic_MmException_805499282 Вызвано исключение: "NAudio.MmException" в System.Private.CoreLib.dll [19:22:27.985] [ERR] [AudioEngine] Play error: MmException: BadDeviceId calling waveOutSetVolume [19:22:27.985] [DBG] [AudioEngine] RaiseError: MmException [19:22:27.985] [INF] [Orchestrator] ◆ Received error event: MmException: BadDeviceId calling waveOutSetVolume [19:22:27.985] [DBG] [Orchestrator] Skipping duplicate error: generic_MmException_805499282 [19:22:28.576] [DBG] [CachingSource] Chunk 3: GET rn=4, range=393216-524287 [19:22:28.636] [DBG] [CachingSource] Chunk 4: GET rn=5, range=524288-655359 [19:22:29.501] [DBG] [CachingSource] Progress: 25% (5/20) [19:22:36.821] [DBG] [Lifecycle] Level change: Soft → None (requested=None, forceOptimize=True), VMs=57 [19:22:36.821] [DBG] [PlayerBar] OnResume called (previousLevel=Soft) [19:22:36.821] [DBG] [PlayerBar] Resumed: heavy subscriptions recreated [19:22:36.821] [DBG] [Lifecycle] Level change complete. Current=None Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll [19:22:36.821] [DBG] [MemoryDiag] Monitoring interval: 5s [19:22:36.821] [DBG] [Window] App activated, suspend level lifted. [19:22:58.380] [DBG] [Lifecycle] Level change: None → Soft (requested=Soft, forceOptimize=True), VMs=57 [19:22:58.380] [DBG] [PlayerBar] Suspended (level=Soft): heavy subscriptions disposed [19:22:58.380] [DBG] [Lifecycle] Level change complete. Current=Soft [19:22:58.380] [DBG] [MemoryDiag] Monitoring interval: 15s [19:22:58.380] [DBG] [Window] App deactivated, suspend level applied. [19:23:06.031] [DBG] [Lifecycle] Level change: Soft → None (requested=None, forceOptimize=True), VMs=57 [19:23:06.031] [DBG] [PlayerBar] OnResume called (previousLevel=Soft) [19:23:06.031] [DBG] [PlayerBar] Resumed: heavy subscriptions recreated [19:23:06.031] [DBG] [Lifecycle] Level change complete. Current=None [19:23:06.031] [DBG] [MemoryDiag] Monitoring interval: 5s Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll [19:23:06.031] [DBG] [Window] App activated, suspend level lifted. [19:23:07.798] [DBG] [AudioPlayer] Stop [19:23:07.798] [DBG] [NAudioBackend] Flushed [19:23:07.799] [DBG] [PlayerBar] BeginTrackReset: session=4 [19:23:07.799] [DBG] [PlayerBar] New track: yt_o5hD5w2kE_I [19:23:07.800] [DBG] [AudioEngine] Using cache: WebM/134kbps [19:23:07.801] [INF] [AudioPlayer] Play: yt_o5hD5w2kE_I, bitrate hint: 134 [19:23:07.801] [INF] [AudioSourceFactory] Using cached: yt_o5hD5w2kE_I (WebM/134kbps) [19:23:07.805] [INF] [LocalFileSource] Initialized: duration=184021ms, codec=Opus, size=2953KB [19:23:07.805] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:23:07.805] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:23:07.805] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/134kbps [19:23:07.832] [DBG] [AudioPipeline] Decoder started (dedicated thread) [19:23:07.893] [DBG] [NAudioBackend] Fill loop activated (warmup phase) [19:23:08.111] [DBG] [PlayerBar] EndTrackReset: session=4 [19:23:10.904] [WRN] [NAudioBackend] ✗ Warmup timeout after 3000ms: 0/76800 bytes (0ms/200ms) [19:23:10.904] [WRN] [AudioPlayer] ⚠ Backend warmup timeout — possible initial artifact [19:23:10.905] [WRN] [NAudioBackend] ⚠ Start with LOW buffer: 0/76800 bytes (0ms/200ms). Artifact risk! Вызвано исключение: "System.InvalidOperationException" в NAudio.WinMM.dll Вызвано исключение: "System.InvalidOperationException" в LMP.dll [19:23:10.919] [ERR] [AudioPlayer] Play failed: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 [19:23:10.919] [DBG] [AudioEngine] RaiseError: InvalidOperationException Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:10.962] [ERR] [AudioPlayer] Command error: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:23:10.962] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:10.963] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:10.963] [INF] [Orchestrator] Handling: InvalidOperationException [19:23:10.963] [ERR] [Orchestrator] Generic error: Must call Init first [19:23:10.964] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:10.964] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:10.992] [ERR] [AudioEngine] Play error: InvalidOperationException: Must call Init first [19:23:10.992] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:10.992] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:10.992] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:11.252] [DBG] [AudioPlayer] Stop Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll [19:23:11.281] [DBG] [NAudioBackend] Flushed [19:23:11.282] [DBG] [AudioPipeline] Disposed [19:23:11.282] [DBG] [NAudioBackend] Flushed [19:23:11.283] [DBG] [PlayerBar] BeginTrackReset: session=5 [19:23:11.283] [DBG] [PlayerBar] New track: yt_92BTVy78P0E [19:23:11.285] [INF] [AudioPlayer] Play: yt_92BTVy78P0E, bitrate hint: 140 [19:23:11.285] [INF] [AudioSourceFactory] Streaming WebM/Opus/140kbps: yt_92BTVy78P0E_WebM_160 [19:23:11.286] [INF] [CachingSource] Resuming: 5/20 chunks [19:23:11.292] [INF] [CachingSource] Initialized: duration=154021ms, cached=25% [19:23:11.292] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:23:11.292] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:23:11.292] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/140kbps [19:23:11.293] [DBG] [AudioPipeline] Decoder started (dedicated thread) [19:23:11.312] [DBG] [NAudioBackend] Fill loop activated (warmup phase) [19:23:11.594] [DBG] [PlayerBar] EndTrackReset: session=5 [19:23:12.091] [DBG] [CachingSource] Progress: 25% (5/20) [19:23:14.326] [WRN] [NAudioBackend] ✗ Warmup timeout after 3000ms: 0/76800 bytes (0ms/200ms) Вызвано исключение: "System.InvalidOperationException" в NAudio.WinMM.dll [19:23:14.326] [WRN] [AudioPlayer] ⚠ Backend warmup timeout — possible initial artifact [19:23:14.326] [WRN] [NAudioBackend] ⚠ Start with LOW buffer: 0/76800 bytes (0ms/200ms). Artifact risk! Вызвано исключение: "System.InvalidOperationException" в LMP.dll Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:14.338] [ERR] [AudioPlayer] Play failed: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 [19:23:14.338] [DBG] [AudioEngine] RaiseError: InvalidOperationException Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:14.474] [ERR] [AudioPlayer] Command error: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:23:14.474] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:14.475] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:14.475] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:14.475] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:14.475] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:14.764] [ERR] [AudioEngine] Play error: InvalidOperationException: Must call Init first [19:23:14.764] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:14.764] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:14.764] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:18.826] [DBG] [AudioPlayer] Stop Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll [19:23:18.859] [DBG] [NAudioBackend] Flushed [19:23:18.860] [DBG] [AudioPipeline] Disposed [19:23:18.860] [DBG] [NAudioBackend] Flushed [19:23:18.861] [DBG] [PlayerBar] BeginTrackReset: session=6 [19:23:18.861] [DBG] [PlayerBar] New track: yt_yOuj_v6zU6Q [19:23:18.863] [INF] [AudioPlayer] Play: yt_yOuj_v6zU6Q, bitrate hint: 187 [19:23:18.863] [INF] [AudioSourceFactory] Streaming WebM/Opus/187kbps: yt_yOuj_v6zU6Q_WebM_256 [19:23:18.863] [INF] [CachingSource] Resuming: 3/17 chunks [19:23:18.864] [INF] [CachingSource] Initialized: duration=114441ms, cached=18% [19:23:18.864] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:23:18.864] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:23:18.864] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/187kbps [19:23:18.865] [DBG] [AudioPipeline] Decoder started (dedicated thread) [19:23:18.890] [DBG] [NAudioBackend] Fill loop activated (warmup phase) [19:23:19.170] [DBG] [PlayerBar] EndTrackReset: session=6 [19:23:19.671] [DBG] [CachingSource] Chunk 3: GET rn=1, range=393216-524287 [19:23:19.733] [DBG] [CachingSource] Chunk 4: GET rn=2, range=524288-655359 [19:23:20.603] [DBG] [CachingSource] Progress: 29% (5/17) [19:23:21.893] [WRN] [NAudioBackend] ✗ Warmup timeout after 3000ms: 0/76800 bytes (0ms/200ms) Вызвано исключение: "System.InvalidOperationException" в NAudio.WinMM.dll [19:23:21.893] [WRN] [AudioPlayer] ⚠ Backend warmup timeout — possible initial artifact [19:23:21.893] [WRN] [NAudioBackend] ⚠ Start with LOW buffer: 0/76800 bytes (0ms/200ms). Artifact risk! Вызвано исключение: "System.InvalidOperationException" в LMP.dll [19:23:21.905] [ERR] [AudioPlayer] Play failed: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 [19:23:21.905] [DBG] [AudioEngine] RaiseError: InvalidOperationException Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:22.041] [ERR] [AudioPlayer] Command error: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:23:22.041] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:22.042] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:22.042] [INF] [Orchestrator] Handling: InvalidOperationException [19:23:22.042] [ERR] [Orchestrator] Generic error: Must call Init first [19:23:22.043] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:22.043] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:22.068] [ERR] [AudioEngine] Play error: InvalidOperationException: Must call Init first [19:23:22.068] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:22.068] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:22.068] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:22.312] [DBG] [AudioPlayer] Stop Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll Вызвано исключение: "System.Threading.Tasks.TaskCanceledException" в System.Private.CoreLib.dll [19:23:22.344] [DBG] [NAudioBackend] Flushed [19:23:22.344] [DBG] [AudioPipeline] Disposed [19:23:22.344] [DBG] [NAudioBackend] Flushed [19:23:22.346] [DBG] [PlayerBar] BeginTrackReset: session=7 [19:23:22.346] [DBG] [PlayerBar] New track: yt_o5hD5w2kE_I [19:23:22.347] [DBG] [AudioEngine] Using cache: WebM/134kbps [19:23:22.348] [INF] [AudioPlayer] Play: yt_o5hD5w2kE_I, bitrate hint: 134 [19:23:22.348] [INF] [AudioSourceFactory] Using cached: yt_o5hD5w2kE_I (WebM/134kbps) [19:23:22.348] [INF] [LocalFileSource] Initialized: duration=184021ms, codec=Opus, size=2953KB [19:23:22.348] [DBG] [OpusDecoder] Created: 48000Hz, 2ch [19:23:22.348] [INF] [NAudioBackend] Reinit (fast path): 48000Hz, 2ch [19:23:22.348] [INF] [AudioPipeline] Created (shared backend): WebM/Opus/134kbps [19:23:22.350] [DBG] [AudioPipeline] Decoder started (dedicated thread) [19:23:22.375] [DBG] [NAudioBackend] Fill loop activated (warmup phase) [19:23:22.655] [DBG] [PlayerBar] EndTrackReset: session=7 [19:23:25.384] [WRN] [NAudioBackend] ✗ Warmup timeout after 3000ms: 0/76800 bytes (0ms/200ms) [19:23:25.384] [WRN] [AudioPlayer] ⚠ Backend warmup timeout — possible initial artifact [19:23:25.384] [WRN] [NAudioBackend] ⚠ Start with LOW buffer: 0/76800 bytes (0ms/200ms). Artifact risk! Вызвано исключение: "System.InvalidOperationException" в NAudio.WinMM.dll Вызвано исключение: "System.InvalidOperationException" в LMP.dll Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:25.397] [ERR] [AudioPlayer] Play failed: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 [19:23:25.397] [DBG] [AudioEngine] RaiseError: InvalidOperationException Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:25.470] [ERR] [AudioPlayer] Command error: Must call Init first EXCEPTION: System.InvalidOperationException: Must call Init first at NAudio.Wave.WaveOutEvent.Play() at LMP.Core.Audio.Backends.NAudioBackend.Start() in D:\Projects\CS\LMP\Core\Audio\Backends\NAudioBackend.cs:line 382 at LMP.Core.Audio.AudioPipeline.Start() in D:\Projects\CS\LMP\Core\Audio\AudioPipeline.cs:line 721 at LMP.Core.Audio.AudioPlayer.HandlePlayAsync(PlayCommand cmd) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 568 at LMP.Core.Audio.AudioPlayer.ProcessCommandAsync(IAudioCommand command) in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 432 at LMP.Core.Audio.AudioPlayer.ProcessCommandsAsync() in D:\Projects\CS\LMP\Core\Audio\AudioPlayer.cs:line 407 [19:23:25.470] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:25.472] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:25.472] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:25.472] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:25.472] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 Вызвано исключение: "System.InvalidOperationException" в System.Private.CoreLib.dll [19:23:25.489] [ERR] [AudioEngine] Play error: InvalidOperationException: Must call Init first [19:23:25.489] [DBG] [AudioEngine] RaiseError: InvalidOperationException [19:23:25.489] [INF] [Orchestrator] ◆ Received error event: InvalidOperationException: Must call Init first [19:23:25.489] [DBG] [Orchestrator] Skipping duplicate error: generic_InvalidOperationException_-317973150 [19:23:27.712] [DBG] [Lifecycle] Level change: None → Soft (requested=Soft, forceOptimize=True), VMs=57 [19:23:27.712] [DBG] [PlayerBar] Suspended (level=Soft): heavy subscriptions disposed [19:23:27.712] [DBG] [Lifecycle] Level change complete. Current=Soft [19:23:27.712] [DBG] [MemoryDiag] Monitoring interval: 15s [19:23:27.712] [DBG] [Window] App deactivated, suspend level applied.
Глубокий анализ 🔍 Проблема 1: Показ/скрытие окна по ЛКМ Сейчас NIN_SELECT и WM_LBUTTONDBLCLK всегда вызывают _onShowWindow?.Invoke(), а RestoreFromTray() всегда показывает окно. Нужен toggle: если окно видимо и активно → скрыть в трей, если скрыто → показать.
🔍 Проблема 2: Hook не снимается при фокусе главного окна Сейчас hook снимается только по 2с таймауту после ухода курсора. Но если пользователь кликнул по иконке и окно развернулось — hook висит ещё 2 секунды без надобности. Нужно снимать его немедленно при Window.Activated.
🔍 Проблема 3: Mouse lag от WH_MOUSE_LL Из исследования Microsoft и сообщества:
Лаг мыши от хука вызван тем, что хук вставляется в цепочку обработки mouse events, и если приложение загружено (высокая нагрузка CPU, задержка обработки сообщений), это задерживает всю цепочку. 1
Microsoft прямо рекомендует: "If the application must use low level hooks, it should run the hooks on a dedicated thread that passes the work off to a worker thread and then immediately returns." 2
Решение — перенести hook на отдельный поток с собственным message pump: "moving the global mouse hook handler to another thread in which we've installed another message pump... Since the new message pump is independent from the graphical invalidates that are clogging the Main Thread, the mouse pointer is back to its usual fluidity." 1
"This hook is called in the context of the thread that installed it. The call is made by sending a message to the thread that installed the hook. Therefore, the thread that installed the hook must have a message loop." 3
Workaround из практики: "Create and start during initialization a separate thread which sets the mouse_ll hook and proceeds win message queue... This will make your mouse_ll processing independent of main GUI thread of the application." 4
На Windows 7+ есть LowLevelHooksTimeout: "the hook is silently removed without being called. There is no way for the application to know whether the hook is removed." А с Win10 1709+ "The maximum timeout value the system allows is 1000 milliseconds." 3
"Make sure your hook routine is very efficient to avoid introducing input lag or other performance issues." 5
Текущая ситуация в коде Ваш hook уже очень быстрый (zero-alloc, только Marshal.ReadInt32, ранний выход для не-wheel) — это хорошо. Но hook установлен на UI-потоке Avalonia, и если Avalonia делает layout/render (особенно при Soft Suspend, GC, etc.), message pump тормозит → mouse lag.
📋 Пошаговый план
- Toggle Show/Hide по ЛКМ TrayManager получает два callback: _onShowWindow и новый _onToggleWindow Проще: передаём один callback _onTrayLeftClick, а MainWindow сам решает show/hide MainWindow: если IsVisible && IsActive → MinimizeToTray(), иначе → RestoreFromTray()
- Unhook при активации главного окна MainWindow.OnWindowActivated → вызывает _trayManager.UninstallHookIfActive() Публичный метод в TrayManager — снимает hook и коммитит громкость Логика: окно активно = пользователь взаимодействует с UI, скролл на трее невозможен
- Dedicated thread для hook (anti-lag) Создаём отдельный поток с собственным Win32 message loop (GetMessage/DispatchMessage) Hook устанавливается на ЭТОМ потоке, а не на Avalonia UI thread Callback максимально быстрый (уже есть) + volume change через Volatile.Write или Interlocked Уведомления на UI через Dispatcher.UIThread.Post (только для tooltip update) Этот поток не зависит от Avalonia render pipeline → нулевой mouse lag