well, there can't be a race here. frameEvent is set by renderManager AFTER it has something to render. Even there was a context switch after reset(), HasFrame would return true.
I think auto reset make no sense here. RenderManager can set the event for e.g. 2 new frames while application is still in one cycle.