diff options
Diffstat (limited to 'engines/kyra/screen.cpp')
-rw-r--r-- | engines/kyra/screen.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index bc1ccbb801..52035a49f4 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -658,10 +658,18 @@ int Screen::fadePalStep(const Palette &pal, int diff) { } void Screen::setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue) { - getPalette(0)[index * 3 + 0] = red; - getPalette(0)[index * 3 + 1] = green; - getPalette(0)[index * 3 + 2] = blue; - setScreenPalette(getPalette(0)); + Palette &pal = getPalette(0); + + const int offset = index * 3; + + if (pal[offset + 0] == red && pal[offset + 1] == green && pal[offset + 2] == blue) + return; + + pal[offset + 0] = red; + pal[offset + 1] = green; + pal[offset + 2] = blue; + + setScreenPalette(pal); } void Screen::getRealPalette(int num, uint8 *dst) { |