[Scummvm-git-logs] scummvm master -> e2366d4089ca29ea20da171d008d9d4ef0fd7acc
sev-
noreply at scummvm.org
Tue Jul 1 22:32:15 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
e2366d4089 DIRECTOR: Fix Palette Duplication
Commit: e2366d4089ca29ea20da171d008d9d4ef0fd7acc
https://github.com/scummvm/scummvm/commit/e2366d4089ca29ea20da171d008d9d4ef0fd7acc
Author: Malhar (themalharbdv2046 at gmail.com)
Date: 2025-07-02T00:32:12+02:00
Commit Message:
DIRECTOR: Fix Palette Duplication
When duplicating, deep copy of palette should be made
Changed paths:
engines/director/castmember/palette.cpp
engines/director/castmember/palette.h
diff --git a/engines/director/castmember/palette.cpp b/engines/director/castmember/palette.cpp
index 0c59ab0c072..9f9ae4fbacb 100644
--- a/engines/director/castmember/palette.cpp
+++ b/engines/director/castmember/palette.cpp
@@ -41,6 +41,21 @@ PaletteCastMember::PaletteCastMember(Cast *cast, uint16 castId, PaletteCastMembe
_palette = source._palette ? new PaletteV4(*source._palette) : nullptr;
}
+PaletteCastMember::PaletteCastMember(Cast *cast, uint16 castId, byte *paletteData, PaletteV4 *pal)
+ : CastMember(cast, castId) {
+ _type = kCastPalette;
+ _palette = new PaletteV4(pal->id, paletteData, pal->length);
+ _loaded = true;
+}
+
+// Need to make a deep copy
+CastMember *PaletteCastMember::duplicate(Cast *cast, uint16 castId) {
+ byte *buf = (byte *)malloc(_palette->length);
+ memcpy(buf, _palette, _palette->length);
+
+ return (CastMember *)(new PaletteCastMember(cast, castId, buf, _palette));
+}
+
PaletteCastMember::~PaletteCastMember() {
if (_palette) {
delete[] _palette->palette;
diff --git a/engines/director/castmember/palette.h b/engines/director/castmember/palette.h
index 874d226e169..66db897c0bf 100644
--- a/engines/director/castmember/palette.h
+++ b/engines/director/castmember/palette.h
@@ -30,9 +30,10 @@ class PaletteCastMember : public CastMember {
public:
PaletteCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
PaletteCastMember(Cast *cast, uint16 castId, PaletteCastMember &source);
+ PaletteCastMember(Cast *cast, uint16 castId, byte *paletteData, PaletteV4 *palette);
~PaletteCastMember();
- CastMember *duplicate(Cast *cast, uint16 castId) override { return (CastMember *)(new PaletteCastMember(cast, castId, *this)); }
+ CastMember *duplicate(Cast *cast, uint16 castId) override;
CastMemberID getPaletteId();
void activatePalette();
More information about the Scummvm-git-logs
mailing list