Fixed outgoing-only sockets. Minor performance patch.
This commit is contained in:
@@ -132,22 +132,35 @@ namespace Discord.WebSockets.Voice
|
|||||||
tasks.Add(SendVoiceAsync());
|
tasks.Add(SendVoiceAsync());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//This thread is required to establish a connection even if we're outgoing only
|
||||||
|
#if USE_THREAD
|
||||||
if ((_client.Config.VoiceMode & DiscordVoiceMode.Incoming) != 0)
|
if ((_client.Config.VoiceMode & DiscordVoiceMode.Incoming) != 0)
|
||||||
{
|
{
|
||||||
#if USE_THREAD
|
|
||||||
_receiveThread = new Thread(new ThreadStart(() => ReceiveVoiceAsync(_cancelToken)));
|
_receiveThread = new Thread(new ThreadStart(() => ReceiveVoiceAsync(_cancelToken)));
|
||||||
_receiveThread.Start();
|
_receiveThread.Start();
|
||||||
|
}
|
||||||
|
else //Dont make an OS thread if we only want to capture one packet...
|
||||||
|
tasks.Add(Task.Run(() => ReceiveVoiceAsync(_cancelToken)));
|
||||||
#else
|
#else
|
||||||
tasks.Add(ReceiveVoiceAsync());
|
tasks.Add(ReceiveVoiceAsync());
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
#if !DNXCORE50
|
#if !DNXCORE50
|
||||||
tasks.Add(WatcherAsync());
|
tasks.Add(WatcherAsync());
|
||||||
#endif
|
#endif
|
||||||
|
if (tasks.Count > 0)
|
||||||
|
{
|
||||||
|
// We need to combine tasks into one because receiveThread is
|
||||||
|
// supposed to exit early if it's an outgoing-only client
|
||||||
|
// and we dont want the main thread to think we errored
|
||||||
|
var task = Task.WhenAll(tasks);
|
||||||
|
tasks.Clear();
|
||||||
|
tasks.Add(task);
|
||||||
|
}
|
||||||
tasks.AddRange(base.GetTasks());
|
tasks.AddRange(base.GetTasks());
|
||||||
|
|
||||||
return tasks.ToArray();
|
return new Task[] { Task.WhenAll(tasks.ToArray()) };
|
||||||
}
|
}
|
||||||
protected override Task Cleanup()
|
protected override Task Cleanup()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user