Serialize the path of the currently playing movie in libretro builds

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

View file

@ -118,6 +118,14 @@ template <> bool mkxp_sandbox::sandbox_serialize(double value, void *&data, wasm
return true;
}
template <> bool mkxp_sandbox::sandbox_serialize(const char *value, void *&data, wasm_size_t &max_size) {
wasm_size_t size = std::strlen(value) + 1;
RESERVE(size);
std::memcpy(data, value, size);
ADVANCE(size);
return true;
}
template <> bool mkxp_sandbox::sandbox_serialize(const std::string &value, void *&data, wasm_size_t &max_size) {
wasm_size_t size = value.length() + 1;
RESERVE(size);

View file

@ -40,6 +40,7 @@ namespace mkxp_sandbox {
template <typename T> typename std::enable_if<!std::is_same<T, bool>::value && !std::is_enum<T>::value && (std::is_integral<T>::value || std::is_floating_point<T>::value), bool>::type sandbox_serialize(T value, void *&data, wasm_size_t &max_size);
template <typename T> bool sandbox_serialize(const std::vector<T> &value, void *&data, wasm_size_t &max_size);
template <typename T> bool sandbox_serialize(const QuadArray<T> &value, void *&data, wasm_size_t &max_size);
template <typename T> typename std::enable_if<std::is_same<T, char>::value, bool>::type sandbox_serialize(const T *value, void *&data, wasm_size_t &max_size);
template <typename T> typename std::enable_if<std::is_class<T>::value, bool>::type sandbox_serialize(const T *value, void *&data, wasm_size_t &max_size);
template <typename T> typename std::enable_if<std::is_class<T>::value && boost::is_detected<sandbox_serialize_member_declaration, T>::value, bool>::type sandbox_serialize(const T &value, void *&data, wasm_size_t &max_size);
template <typename T> typename std::enable_if<std::is_class<T>::value && !boost::is_detected<sandbox_serialize_member_declaration, T>::value, bool>::type sandbox_serialize(const T &value, void *&data, wasm_size_t &max_size);

View file

@ -575,6 +575,7 @@ struct Movie
if (baseTicks != (uint64_t)-1) {
if (!mkxp_sandbox::sandbox_serialize(baseTicks, data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(currentTicks, data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(srcOps->path(), data, max_size)) return false;
}
return true;