From 7e5a87dd461833814ef796f34af7de65257231c4 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 22 Aug 2023 23:10:52 +0100 Subject: [PATCH] Blitter: Null blitter always requires no zoom levels --- src/blitter/null.hpp | 1 + src/spritecache.cpp | 1 + src/spriteloader/spriteloader.hpp | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/src/blitter/null.hpp b/src/blitter/null.hpp index 6a48dba4f1..d29bbc14ca 100644 --- a/src/blitter/null.hpp +++ b/src/blitter/null.hpp @@ -18,6 +18,7 @@ public: Blitter_Null() { this->SetScreenDepth(0); + this->SetNoSpriteDataRequired(true); } void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override {}; diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 80d706266c..83e95be6cf 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -605,6 +605,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty } else { zoom_levels = UINT8_MAX; } + if (encoder->NoSpriteDataRequired()) zoom_levels = 0; SpriteFile &file = *sc->file; size_t file_pos = sc->file_pos; diff --git a/src/spriteloader/spriteloader.hpp b/src/spriteloader/spriteloader.hpp index 64f87f4eb0..27aa1b5994 100644 --- a/src/spriteloader/spriteloader.hpp +++ b/src/spriteloader/spriteloader.hpp @@ -84,6 +84,7 @@ public: class SpriteEncoder { bool supports_missing_zoom_levels = false; bool supports_32bpp = false; + bool no_data_required = false; protected: inline void SetSupportsMissingZoomLevels(bool supported) @@ -96,6 +97,11 @@ protected: this->supports_32bpp = supported; } + inline void SetNoSpriteDataRequired(bool not_required) + { + this->no_data_required = not_required; + } + public: virtual ~SpriteEncoder() = default; @@ -105,6 +111,11 @@ public: return this->supports_missing_zoom_levels; } + inline bool NoSpriteDataRequired() const + { + return this->no_data_required; + } + /** * Can the sprite encoder make use of RGBA sprites? */