If you check out my claim to fame, PixelShips, you'll notice that there's a "Please Wait" when it starts up. The reason it's doing this is that it's making a quick check to see if the desired framerate is the same one the monitor is doing, not by using get_refresh_rate(), because that doesn't always work, but by timing 1 second worth of frames with vsync(), running a timer at the desired sync rate, and then comparing the two. If the two are within 2 frames of each other, the game uses vsync() and double buffering, and if not, it does just double buffering and uses the timer instead.
Since switching to real-time semantics though, I've lost any will to care which is used, so I just add a vsyncing option to my games now.
Real-Time + Vsynced Double Buffering = Almost as good as page flipping
I don't use page-flipping or triple-buffering in my games though because they can screw up the I/O interface for the keyboard, mouse and joystick in Windows 98 in the more recent 4.1.x and 4.2.x Allegro builds and trying to figure out why it happens never got anywhere. (Even after figuring out what version the problems began in.)
--- Kris Asick (Gemini)