aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Bouclet2011-06-26 10:35:40 +0200
committerBastien Bouclet2011-07-02 22:01:45 +0200
commita360a64dd744c922232e1f0d9a1b35a782bd572c (patch)
tree14ba8148290b53e2bc2937365f09b1cbac50a140
parent09501be85bee9f686a7815fc0f47a1e16008f38d (diff)
downloadscummvm-rg350-a360a64dd744c922232e1f0d9a1b35a782bd572c.tar.gz
scummvm-rg350-a360a64dd744c922232e1f0d9a1b35a782bd572c.tar.bz2
scummvm-rg350-a360a64dd744c922232e1f0d9a1b35a782bd572c.zip
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 ...
-rw-r--r--backends/graphics/surfacesdl/surfacesdl-graphics.cpp9
1 files changed, 9 insertions, 0 deletions
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
//