Does your game logic have to be at a fixed rate? IE, your 'updateGame' function... does calling that more/less frequently affect the speed of the game?
Then you don't really need to regulate the framerate. Just let it draw as fast as it wants. You can scale it back if you want to conserve battery power on laptops by throwing in a sleep() if you detect the framerate is running too high.
Or better yet... VSync and match the user's refresh rate. Smooth updates an you don't have to worry about sleeping because that's done for you when you display.
Regulating logic updates based on a fixed framerate can be tricky. Or at least... to do it 'right' can be tricky. I've had to do this in emulators in the past... where the emulated system runs at 60 FPS, so that's what you have to run/display at or else the games run too fast/slow.
I made a frame limiter a while ago and posted it on another forum. Forgive the use of poor Hungarian notation... I was young:
I'm happy to answer questions about it, but most of that post covers it.
The trick is to "skip frames" when the user is running too slow. This means you run the logic, but don't do a draw. Results in slightly choppier graphics, but the game still plays normally apart from that.