@mdhughes @screwtape generally accepting-values is ran on behalf of a frame, so running it from execute frame command is correct (note that execute-frame-command *is* thread safe).
Re starting a frame in a background, you may wrap run-application-frame in make-thread, or use find-application-frame.
Note that soon (before christmas?) I'm merging a branch that adds thread-safe drawing and a repaint queue that speeds things up a lot and enables animations.