simple GTK agg animation with patches

Thought I would post this as a simple GTKagg animation
with patches (after John Hunter fixed it for me :-):

import pygtk, gobject
import matplotlib
matplotlib.use('GTKAgg')
import numpy as np
import matplotlib.pyplot as plt
import pylab
from matplotlib.patches import CirclePolygon, Polygon

fig = plt.figure(figsize=(10,6))
ax = fig.add_subplot(111, autoscale_on=False )
canvas = fig.canvas

plt.axis([-1, 7, -0.5, 2.2])

def update_line():
   global x, y
   print update_line.cnt_tot
   if update_line.background is None:
       update_line.background = canvas.copy_from_bbox(ax.bbox)
   canvas.restore_region(update_line.background)

   x_cir = 1.0 + 0.003*update_line.cnt

   if update_line.cir is None:
       cir = CirclePolygon((x_cir, 1), 0.3, animated=True, \
                   resolution=12, lw=2 )
       ax.add_patch(cir)
       update_line.cir = cir
   else:
       update_line.cir._xy = x_cir, 1
       update_line.cir._update_transform()
       ax.draw_artist(update_line.cir)

   canvas.blit(ax.bbox)

   if update_line.direction == 0:
       update_line.cnt += 1
       update_line.cnt_tot += 1
       if update_line.cnt > 500:
           update_line.direction = 1
   else:
       update_line.cnt -= 1
       update_line.cnt_tot += 1
       if update_line.cnt < 100:
           update_line.direction = 0

   return update_line.cnt<100000

update_line.cnt = 0
update_line.cnt_tot = 0
update_line.direction = 0
update_line.background = None
update_line.cir = None

def start_anim(event):
    gobject.idle_add(update_line)
    canvas.mpl_disconnect(start_anim.cid)

start_anim.cid = canvas.mpl_connect('draw_event', start_anim)

plt.show()