possible deadlock fix

This commit is contained in:
Master Kwoth 2016-01-31 20:24:06 +01:00
parent e869972127
commit e1d053abb1

View File

@ -26,16 +26,13 @@ namespace NadekoBot.Classes.Music {
public MusicControls() {
Task.Run(async () => {
while (!Stopped) {
lock (_voiceLock) {
if (CurrentSong == null) {
if (SongQueue.Count > 0)
LoadNextSong().Wait();
} else if (CurrentSong.State == StreamState.Completed || NextSong) {
NextSong = false;
LoadNextSong().Wait();
}
if (CurrentSong == null) {
if (SongQueue.Count > 0)
await LoadNextSong();
} else if (CurrentSong.State == StreamState.Completed || NextSong) {
NextSong = false;
await LoadNextSong();
}
await Task.Delay(1000);
}
@ -71,18 +68,16 @@ namespace NadekoBot.Classes.Music {
}
internal void Stop() {
lock (_voiceLock) {
Stopped = true;
foreach (var kvp in SongQueue) {
if (kvp != null)
kvp.Stop();
}
SongQueue.Clear();
CurrentSong?.Stop();
CurrentSong = null;
VoiceClient?.Disconnect();
VoiceClient = null;
Stopped = true;
foreach (var kvp in SongQueue) {
if (kvp != null)
kvp.Stop();
}
SongQueue.Clear();
CurrentSong?.Stop();
CurrentSong = null;
VoiceClient?.Disconnect();
VoiceClient = null;
}
internal bool TogglePause() => IsPaused = !IsPaused;