|
Timing haywire only on Mac OS 10.6, is vsync a nop? |
jmreiser
Member #12,162
August 2010
|
I have a small application using Allegro 4.2.3.1 on the Mac, and alleg42.dll on Windows. On most machines everything works the same and works fine. However on a couple of new Macs running Mac OS 10.6, the simple animation graphics we are doing run way too fast. As best I can tell so far it's an issue between Allegro and Mac OS 10.6. Works fine on 10.4 on all sorts of machines. Not an issue on Windows no matter what we do. Anyone heard of this before? Has vsync become a no-op on 10.6?? We use vsync and then blit(). When I comment out the call to vsync(), I get the same behavior on 10.4 and elsewhere. TIA |
Evert
Member #794
November 2000
|
Not that I know of, but I suppose it's possible. Note that in general you should not rely on vsync to synchronise your logic. This is why. EDITed unfortunate typo... |
Matthew Leverton
Supreme Loser
January 1999
|
Don't know about the 10.6 specifics. But vsync was never meant to be a way to regulate timing. It is a way to prevent sheering on CRTs. To implement timing, set up an "interrupt" that is called 60 times per second, which in turn updates a global variable. Monitor that variable for increments in your main loop, and act accordingly. |
MiquelFire
Member #3,110
January 2003
|
Also, vsync may not be at the same speed on all machines. One could be 100 fps, another 59, another 60, another 75, etc. --- |
jmreiser
Member #12,162
August 2010
|
Thanks you guys. Very speedy replies too. I just noticed this in the FAQ (doh!): Quote: Q: Why doesn't vsync() seem to work? The machines that exhibit this behavior are relatively new 15" MacBook Pros running 10.6, so it may be a MacBook Pro issue rather than 10.6 per se. |
Evert
Member #794
November 2000
|
jmreiser said: I just noticed this in the FAQ (doh!): Yeah, well, I guess that particular answer hasn't been particularly relevant for at least 10 years. VESA is an old DOS standard for graphics cards. It has never been relevant for Windows, let alone OS X, ports of Allegro. It may also be worth pointing out that on an LCD screen, there's no such thing as "vsync". I think A5 will actually report something like 70 fps on my MacBook, which is a lie (the OS call to get the vsync value actually returns 0, meaning "vsync not supported"). |
jmreiser
Member #12,162
August 2010
|
Maybe this is more of a documentation issue around vsync(). In the online manual: Quote: void vsync(); Or not! You guys are right, vsync is not the way to go. We inherited this code (long story). Thankfully we don't have any CRT's left and vsync's behavior in this case is actually reasonable, it's the online manual that needs a fix. |
|