From 3d21a186fe8dea2715f7f1ff3b9080d6c5efbf4b Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 26 Jan 2016 22:24:50 -0500 Subject: [PATCH] Try to make the pause/resume loop not busy. --- discord/voice_client.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/discord/voice_client.py b/discord/voice_client.py index 70b6574fb..3324587fa 100644 --- a/discord/voice_client.py +++ b/discord/voice_client.py @@ -62,7 +62,8 @@ class StreamPlayer(threading.Thread): self.frame_size = encoder.frame_size self.player = player self._end = threading.Event() - self._paused = threading.Event() + self._resumed = threading.Event() + self._resumed.set() # we are not paused self._connected = connected self.after = after self.delay = encoder.frame_length / 1000.0 @@ -71,8 +72,10 @@ class StreamPlayer(threading.Thread): self.loops = 0 self._start = time.time() while not self._end.is_set(): - if self._paused.is_set(): - continue + # are we paused? + if not self._resumed.is_set(): + # wait until we aren't + self._resumed.wait() if not self._connected.is_set(): self.stop() @@ -98,15 +101,15 @@ class StreamPlayer(threading.Thread): pass def pause(self): - self._paused.set() + self._resumed.clear() def resume(self): self.loops = 0 self._start = time.time() - self._paused.clear() + self._resumed.set() def is_playing(self): - return not self._paused.is_set() and not self.is_done() + return self._resumed.is_set() and not self.is_done() def is_done(self): return not self._connected.is_set() or self._end.is_set()