Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a129e6e

Browse files
authored
Merge pull request #18901 from anntzer/repeat_delay
Simplify repeat_delay and fix support for it when using iterable frames.
2 parents 10b065f + a264c0f commit a129e6e

File tree

1 file changed

+4
-19
lines changed

1 file changed

+4
-19
lines changed

lib/matplotlib/animation.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,27 +1445,12 @@ def _step(self, *args):
14451445
if not still_going and self.repeat:
14461446
self._init_draw()
14471447
self.frame_seq = self.new_frame_seq()
1448-
self.event_source.remove_callback(self._step)
1449-
self.event_source.add_callback(self._loop_delay)
14501448
self.event_source.interval = self._repeat_delay
14511449
return True
14521450
else:
1451+
self.event_source.interval = self._interval
14531452
return still_going
14541453

1455-
def _stop(self, *args):
1456-
# If we stop in the middle of a loop delay (which is relatively likely
1457-
# given the potential pause here), remove the loop_delay callback as
1458-
# well.
1459-
self.event_source.remove_callback(self._loop_delay)
1460-
super()._stop()
1461-
1462-
def _loop_delay(self, *args):
1463-
# Reset the interval and change callbacks after the delay.
1464-
self.event_source.remove_callback(self._loop_delay)
1465-
self.event_source.interval = self._interval
1466-
self.event_source.add_callback(self._step)
1467-
Animation._step(self)
1468-
14691454

14701455
class ArtistAnimation(TimedAnimation):
14711456
"""
@@ -1657,10 +1642,10 @@ def __init__(self, fig, func, frames=None, init_func=None, fargs=None,
16571642
self._iter_gen = frames
16581643
elif np.iterable(frames):
16591644
if kwargs.get('repeat', True):
1645+
self._tee_from = frames
16601646
def iter_frames(frames=frames):
1661-
while True:
1662-
this, frames = itertools.tee(frames, 2)
1663-
yield from this
1647+
this, self._tee_from = itertools.tee(self._tee_from, 2)
1648+
yield from this
16641649
self._iter_gen = iter_frames
16651650
else:
16661651
self._iter_gen = lambda: iter(frames)

0 commit comments

Comments
 (0)