Don't start animation if already running, and only call on_frame if it isn't None