SDL: Set a black palette by default.

This fixes white flashing screens when using SDL 1.3.
SDL 1.3 palettes are all white by default, whereas
SDL 1.2 palettes are all black ...
This commit is contained in:
Bastien Bouclet 2011-06-26 10:35:40 +02:00
parent 09501be85b
commit a360a64dd7

View File

@ -157,6 +157,12 @@ SurfaceSdlGraphicsManager::SurfaceSdlGraphicsManager(SdlEventSource *sdlEventSou
_currentPalette = (SDL_Color *)calloc(sizeof(SDL_Color), 256);
_cursorPalette = (SDL_Color *)calloc(sizeof(SDL_Color), 256);
// Init palette with black :
// SDL 1.2 palettes default to all black,
// SDL 1.3 palettes default to all white,
// thus we have to set our own default.
memset(_currentPalette, 0, sizeof(SDL_Color) * 256);
_mouseBackup.x = _mouseBackup.y = _mouseBackup.w = _mouseBackup.h = 0;
memset(&_mouseCurState, 0, sizeof(_mouseCurState));
@ -752,6 +758,9 @@ bool SurfaceSdlGraphicsManager::loadGFXMode() {
error("allocating _screen failed");
#endif
// Set a default palette. SDL_SetColors does nothing for non indexed surfaces.
SDL_SetColors(_screen, _currentPalette, 0, 256);
//
// Create the surface that contains the scaled graphics in 16 bit mode
//