From a360a64dd744c922232e1f0d9a1b35a782bd572c Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 26 Jun 2011 10:35:40 +0200 Subject: 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 ... --- backends/graphics/surfacesdl/surfacesdl-graphics.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp index 66207b6808..3739cb28fc 100644 --- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp +++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp @@ -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 // -- cgit v1.2.3