aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorColin Snover2017-06-25 12:13:54 -0500
committerColin Snover2017-07-06 19:12:35 -0500
commita689fee66320048824424c9b9f557e72538b8fb8 (patch)
treeda9f7b5a87fe9a3a3651e30fd75387998c1e157a /engines
parent332fabcb8a0ff3957f0198ad3b93b4f3861f7eba (diff)
downloadscummvm-rg350-a689fee66320048824424c9b9f557e72538b8fb8.tar.gz
scummvm-rg350-a689fee66320048824424c9b9f557e72538b8fb8.tar.bz2
scummvm-rg350-a689fee66320048824424c9b9f557e72538b8fb8.zip
SCI32: Speed up & deduplicate palette submission code
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/palette32.cpp27
1 files changed, 13 insertions, 14 deletions
diff --git a/engines/sci/graphics/palette32.cpp b/engines/sci/graphics/palette32.cpp
index de85b71a2c..3667e1fac1 100644
--- a/engines/sci/graphics/palette32.cpp
+++ b/engines/sci/graphics/palette32.cpp
@@ -415,12 +415,19 @@ int16 GfxPalette32::matchColor(const uint8 r, const uint8 g, const uint8 b) {
}
void GfxPalette32::submit(const Palette &palette) {
- const Palette oldSourcePalette(_sourcePalette);
- mergePalette(_sourcePalette, palette);
+ // If `_needsUpdate` is already set, there is no need to test whether
+ // this palette submission causes a change to `_sourcePalette` since it is
+ // going to be updated already anyway
+ if (_needsUpdate) {
+ mergePalette(_sourcePalette, palette);
+ } else {
+ const Palette oldSourcePalette(_sourcePalette);
+ mergePalette(_sourcePalette, palette);
- if (!_needsUpdate && _sourcePalette != oldSourcePalette) {
- ++_version;
- _needsUpdate = true;
+ if (_sourcePalette != oldSourcePalette) {
+ ++_version;
+ _needsUpdate = true;
+ }
}
}
@@ -429,15 +436,7 @@ void GfxPalette32::submit(const HunkPalette &hunkPalette) {
return;
}
- const Palette oldSourcePalette(_sourcePalette);
- const Palette palette = hunkPalette.toPalette();
- mergePalette(_sourcePalette, palette);
-
- if (!_needsUpdate && oldSourcePalette != _sourcePalette) {
- ++_version;
- _needsUpdate = true;
- }
-
+ submit(hunkPalette.toPalette());
hunkPalette.setVersion(_version);
}