Fix save state serialization of bitmaps in libretro builds

This commit is contained in:
刘皓 2025-05-23 10:09:03 -04:00
parent e137548de4
commit 1b0757c5db
No known key found for this signature in database
GPG key ID: 7901753DB465B711
2 changed files with 3 additions and 15 deletions

View file

@ -3390,7 +3390,7 @@ void Bitmap::loresDisposal()
} }
#ifdef MKXPZ_RETRO #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 (isDisposed()) return mkxp_sandbox::sandbox_serialize(false, data, max_size);
if (!mkxp_sandbox::sandbox_serialize(true, data, max_size)) return false; 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->path, data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(p->font, 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 // TODO: serialize bitmap pixels
return true; 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 #endif // MKXPZ_RETRO

View file

@ -197,7 +197,6 @@ public:
void assumeRubyGC(); void assumeRubyGC();
#ifdef MKXPZ_RETRO #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; bool sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const;
#endif // MKXPZ_RETRO #endif // MKXPZ_RETRO