If `redraw()` returned early, before updating `self.state`, but after
calling `queue_frame`, `on_vblank` would later be called, and reach
`unreachable` since state isn't set to `WaitinfForVBlank`.
In particular, this was happening when the dmabuf from the image copy
frame failed to `bind`.
To avoid this, make sure to update `self.state` immediately after
calling `queue_frame`, before any early return from an error.