getFrame is now always performed on worker thread