Yes it is. It should use the buffering provided by the ScreenBuffers. With ScreenBuffer it would be perfectly synched to the display beam, and it would never busyloop.
It does use ScreenBuffers.
Also, the code does some nasty manual busylooping if the ScreenBuffer cannot be swapped instead of just refusing the swap (ok, there might be some implementation specific reasons why it MUST always succeed to swap). Such while loops can create nasty lockup. If construct like this MUST be used, the code should sleep a bit after each failure.
It hardly ever fails to swap the screen buffer, anyway.
Also, such WaitBOVP syncing breaks triplebuffering (triplebuffering will appear identical to doublebuffering then)
That's what it's inside an IF statement... you can actually turn it off... so what's the point ?