Invert control flow, fix resizing, improve checkerboarding significantly, and add a refresh driver

r? @glennw @mbrubeck
Why no_unused_buffers here? have_unused_buffers seems clearer and doesn't require the !