diff options
| -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) { | 
