diff --git a/lib/matplotlib/backends/backend_gtk.py b/lib/matplotlib/backends/backend_gtk.py index c7c805972764..4135c8bc8c07 100644 --- a/lib/matplotlib/backends/backend_gtk.py +++ b/lib/matplotlib/backends/backend_gtk.py @@ -376,8 +376,10 @@ def draw(self): def draw_idle(self): def idle_draw(*args): - self.draw() - self._idle_draw_id = 0 + try: + self.draw() + finally: + self._idle_draw_id = 0 return False if self._idle_draw_id == 0: self._idle_draw_id = gobject.idle_add(idle_draw) diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index e915c29111e6..511f9b345cc3 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -322,8 +322,10 @@ def draw(self): def draw_idle(self): def idle_draw(*args): - self.draw() - self._idle_draw_id = 0 + try: + self.draw() + finally: + self._idle_draw_id = 0 return False if self._idle_draw_id == 0: self._idle_draw_id = GObject.idle_add(idle_draw) diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py index 37092888bf57..3bbd2311a667 100644 --- a/lib/matplotlib/backends/backend_qt4.py +++ b/lib/matplotlib/backends/backend_qt4.py @@ -415,8 +415,10 @@ def draw_idle(self): self._idle = False def idle_draw(*args): - self.draw() - self._idle = True + try: + self.draw() + finally: + self._idle = True if d: QtCore.QTimer.singleShot(0, idle_draw) diff --git a/lib/matplotlib/backends/backend_tkagg.py b/lib/matplotlib/backends/backend_tkagg.py index 209a8520d044..c3bc260d547b 100644 --- a/lib/matplotlib/backends/backend_tkagg.py +++ b/lib/matplotlib/backends/backend_tkagg.py @@ -362,8 +362,10 @@ def draw_idle(self): d = self._idle self._idle = False def idle_draw(*args): - self.draw() - self._idle = True + try: + self.draw() + finally: + self._idle = True if d: self._idle_callback = self._tkcanvas.after_idle(idle_draw)