Skip to content

Commit

Permalink
Fixed bug 1346
Browse files Browse the repository at this point in the history
alarantalara@gmail.com 2011-12-19 20:43:13 PST

On little endian systems using the Quartz code, an unusual set of RBGA masks is
used when using the windowed video mode.
This set is not taken into account in SDL_DisplayFormatAlpha and so it converts
the supplied surface to a format that does not match the video surface,
preventing fast blitting.

This was observed in recent builds of Battle for Wesnoth when SDL was updated
to cover the problem when switching to full screen in Lion
(https://gna.org/bugs/?18319).

You can observe the performance issue if you download Wesnoth 1.9.13 for OS X
at
http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.9.13/Wesnoth_1.9.13.dmg/download
and replace the included SDL library with any build of SDL 1.2.14 or later. (I
have already patched the included version, so the problem is not observable
without replacement.)

A patch resolving the issue is attached.
  • Loading branch information
slouken committed Dec 29, 2011
1 parent d1eccbd commit 52cad26
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/video/SDL_video.c
Expand Up @@ -979,6 +979,11 @@ SDL_Surface *SDL_DisplayFormatAlpha(SDL_Surface *surface)
if ( (vf->Rmask == 0xff) && (vf->Bmask == 0xff0000) ) {
rmask = 0xff;
bmask = 0xff0000;
} else if ( vf->Rmask == 0xFF00 && (vf->Bmask = 0xFF000000) ) {
amask = 0x000000FF;
rmask = 0x0000FF00;
gmask = 0x00FF0000;
bmask = 0xFF000000;
}
break;

Expand Down

0 comments on commit 52cad26

Please sign in to comment.