Hmm, I can't see any pattern here. It just gets stuck at 100 FPS. If I don't put any SetFramerateLimit my FPS goes to 250 more or less.
This function has a very low resolution, so it's not very surprising.
Think that Ogre's implementation works fine?
That's what people say, at least. They also say that it's not a perfect workaround, but it seems to be enough. This workaround was implemented a long time ago and not modified since then, so I guess it's robust enough