mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-14 01:40:02 +00:00
Try to make the pause/resume loop not busy.
This commit is contained in:
parent
f075548d78
commit
3d21a186fe
@ -62,7 +62,8 @@ class StreamPlayer(threading.Thread):
|
|||||||
self.frame_size = encoder.frame_size
|
self.frame_size = encoder.frame_size
|
||||||
self.player = player
|
self.player = player
|
||||||
self._end = threading.Event()
|
self._end = threading.Event()
|
||||||
self._paused = threading.Event()
|
self._resumed = threading.Event()
|
||||||
|
self._resumed.set() # we are not paused
|
||||||
self._connected = connected
|
self._connected = connected
|
||||||
self.after = after
|
self.after = after
|
||||||
self.delay = encoder.frame_length / 1000.0
|
self.delay = encoder.frame_length / 1000.0
|
||||||
@ -71,8 +72,10 @@ class StreamPlayer(threading.Thread):
|
|||||||
self.loops = 0
|
self.loops = 0
|
||||||
self._start = time.time()
|
self._start = time.time()
|
||||||
while not self._end.is_set():
|
while not self._end.is_set():
|
||||||
if self._paused.is_set():
|
# are we paused?
|
||||||
continue
|
if not self._resumed.is_set():
|
||||||
|
# wait until we aren't
|
||||||
|
self._resumed.wait()
|
||||||
|
|
||||||
if not self._connected.is_set():
|
if not self._connected.is_set():
|
||||||
self.stop()
|
self.stop()
|
||||||
@ -98,15 +101,15 @@ class StreamPlayer(threading.Thread):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def pause(self):
|
def pause(self):
|
||||||
self._paused.set()
|
self._resumed.clear()
|
||||||
|
|
||||||
def resume(self):
|
def resume(self):
|
||||||
self.loops = 0
|
self.loops = 0
|
||||||
self._start = time.time()
|
self._start = time.time()
|
||||||
self._paused.clear()
|
self._resumed.set()
|
||||||
|
|
||||||
def is_playing(self):
|
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):
|
def is_done(self):
|
||||||
return not self._connected.is_set() or self._end.is_set()
|
return not self._connected.is_set() or self._end.is_set()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user