From f490e3e3b668b41e7c6d209ccd59bca0d2866b30 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 29 Dec 2011 04:57:42 -0500 Subject: [PATCH] Fixed bug 1346 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. --HG-- branch : SDL-1.2 --- src/video/SDL_video.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 08e4798cb..ff63e99e3 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -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;