rewrote QZ_DrawScreen to only redraw dirty rectangles (instead of everything)
This reduce the OpenTTD time spent on this function from 75% to 6,7% (in main menu)
Note: window mode is unaffected by this commit
Note: the mouse pointer can now leave artefacts in debug mode
by caching global vars in local vars, the CPU keeps them in registers when looping all pixels on screen
this reduce reading from RAM, which is much slower (Tron wrote this after I detected that those loops used a lot of time)
Note: since the reduced time is waiting for the RAM, the actual CPU usage is not reduced.
This means that it's only detectable while fast forwarding and other situations when OTTD wants to use more than 100% of the CPU time
This increases the execution speed a lot since GCC can't detect the OTTD macro as an endian conversion
while Apple's code uses the instruction to convert endian instead of a series of instructions to produce the same result
Since we don't have that many endian conversions in the game, overall performance should not increase noteworthy
you can still use SDL drivers if you like and you have to run "make upgradeconf" to start using the cocoa drivers (or manually write WITH_COCOA:=1)
since SDL breaks the cocoa drivers, you can't compile with both SDL and cocoa support
Using cocoa drivers makes it easier to make universal binaries and it solves:
-FS#18 [OSX] SDL is weird in universal binaries
-FS#2 [OSX] lazy pointer crash on exit
-FS#10 [OSX] linking error when linking statically to SDL 1.2.8 (needless to explain this, but it means it should be able to compile statically with the default settings now)
-[ 1215073 ] Switching to large size out of fullscreen crashes
Using SDL drivers will still have those issues though
Instead of trying to start a single driver and bailing out if that fails, try to initialise one by one and use the first one which succeeds.
This should fix problems on machines with no sound card, where -s null had to be specified manually.
This results in shorter and hopefully easier to maintain files.
Note: I had to change paths in #include statements of some unrelated files, because I added the ottd base directory to the include path (-I.)