From 1b0757c5dbc66f93ceefb91c6f48a1af48cd2ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=9A=93?= Date: Fri, 23 May 2025 10:09:03 -0400 Subject: [PATCH] Fix save state serialization of bitmaps in libretro builds --- src/display/bitmap.cpp | 17 +++-------------- src/display/bitmap.h | 1 - 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/display/bitmap.cpp b/src/display/bitmap.cpp index c5d27a37..279fb5f5 100644 --- a/src/display/bitmap.cpp +++ b/src/display/bitmap.cpp @@ -3390,7 +3390,7 @@ void Bitmap::loresDisposal() } #ifdef MKXPZ_RETRO -bool Bitmap::_sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &max_size) const +bool Bitmap::sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const { if (isDisposed()) return mkxp_sandbox::sandbox_serialize(false, data, max_size); if (!mkxp_sandbox::sandbox_serialize(true, data, max_size)) return false; @@ -3411,22 +3411,11 @@ bool Bitmap::_sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &ma if (!mkxp_sandbox::sandbox_serialize(p->path, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize(p->font, data, max_size)) return false; + if (!mkxp_sandbox::sandbox_serialize(p->selfHires, data, max_size)) return false; + if (!mkxp_sandbox::sandbox_serialize(p->selfLores, data, max_size)) return false; // TODO: serialize bitmap pixels return true; } - -bool Bitmap::sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const -{ - if (!mkxp_sandbox::sandbox_serialize(p->selfHires != nullptr, data, max_size)) return false; - - if (p->selfHires != nullptr) { - if (!p->selfHires->_sandbox_serialize_inner(data, max_size)) return false; - } - - if (!_sandbox_serialize_inner(data, max_size)) return false; - - return true; -} #endif // MKXPZ_RETRO diff --git a/src/display/bitmap.h b/src/display/bitmap.h index 053730c5..77497d82 100644 --- a/src/display/bitmap.h +++ b/src/display/bitmap.h @@ -197,7 +197,6 @@ public: void assumeRubyGC(); #ifdef MKXPZ_RETRO - bool _sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &max_size) const; bool sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const; #endif // MKXPZ_RETRO