code: func RunWithoutMainLoop(f func(*Image) error, width, height int, scale float64, title string) <-chan error {
  	f = (&imageDumper{f: f}).update
  
  	c := newUIContext(f)
  	theUIContext.Store(c)
  
  	atomic.StoreInt32(&isRunning, 1)
  	return uiDriver().RunWithoutMainLoop(width, height, scale, title, c, graphicsDriver())
  }
docs: // RunWithoutMainLoop runs the game, but don't call the loop on the main (UI) thread.
  // Different from Run, RunWithoutMainLoop returns immediately.
  //
  // Ebiten users should NOT call RunWithoutMainLoop.
  // Instead, functions in github.com/hajimehoshi/ebiten/mobile package calls this.