mirror of
https://github.com/libretro/RetroArch
synced 2025-04-07 13:23:32 +00:00
Create CORE_CTL_RETRO_SERIALIZE_SIZE
This commit is contained in:
parent
6750d74e46
commit
a4bfd9046c
15
content.c
15
content.c
@ -45,6 +45,7 @@
|
|||||||
#include "movie.h"
|
#include "movie.h"
|
||||||
#include "patch.h"
|
#include "patch.h"
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
#include "libretro_version_1.h"
|
||||||
#include "verbosity.h"
|
#include "verbosity.h"
|
||||||
|
|
||||||
#ifdef HAVE_CHEEVOS
|
#ifdef HAVE_CHEEVOS
|
||||||
@ -159,30 +160,32 @@ static bool dump_to_file_desperate(const void *data,
|
|||||||
**/
|
**/
|
||||||
static bool content_save_state(const char *path)
|
static bool content_save_state(const char *path)
|
||||||
{
|
{
|
||||||
|
retro_ctx_size_info_t info;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
void *data = NULL;
|
void *data = NULL;
|
||||||
size_t size = core.retro_serialize_size();
|
|
||||||
|
core_ctl(CORE_CTL_RETRO_SERIALIZE_SIZE, &info);
|
||||||
|
|
||||||
RARCH_LOG("%s: \"%s\".\n",
|
RARCH_LOG("%s: \"%s\".\n",
|
||||||
msg_hash_to_str(MSG_SAVING_STATE),
|
msg_hash_to_str(MSG_SAVING_STATE),
|
||||||
path);
|
path);
|
||||||
|
|
||||||
if (size == 0)
|
if (info.size == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
data = malloc(size);
|
data = malloc(info.size);
|
||||||
|
|
||||||
if (!data)
|
if (!data)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
RARCH_LOG("%s: %d %s.\n",
|
RARCH_LOG("%s: %d %s.\n",
|
||||||
msg_hash_to_str(MSG_STATE_SIZE),
|
msg_hash_to_str(MSG_STATE_SIZE),
|
||||||
(int)size,
|
(int)info.size,
|
||||||
msg_hash_to_str(MSG_BYTES));
|
msg_hash_to_str(MSG_BYTES));
|
||||||
ret = core.retro_serialize(data, size);
|
ret = core.retro_serialize(data, info.size);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
ret = retro_write_file(path, data, size);
|
ret = retro_write_file(path, data, info.size);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RARCH_ERR("%s \"%s\".\n",
|
RARCH_ERR("%s \"%s\".\n",
|
||||||
|
@ -172,6 +172,14 @@ bool core_ctl(enum core_ctl_state state, void *data)
|
|||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
|
case CORE_CTL_RETRO_SERIALIZE_SIZE:
|
||||||
|
{
|
||||||
|
retro_ctx_size_info_t *info = (retro_ctx_size_info_t *)data;
|
||||||
|
if (!info)
|
||||||
|
return false;
|
||||||
|
info->size = core.retro_serialize_size();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case CORE_CTL_RETRO_CTX_FRAME_CB:
|
case CORE_CTL_RETRO_CTX_FRAME_CB:
|
||||||
{
|
{
|
||||||
retro_ctx_frame_info_t *info = (retro_ctx_frame_info_t*)data;
|
retro_ctx_frame_info_t *info = (retro_ctx_frame_info_t*)data;
|
||||||
|
@ -66,9 +66,16 @@ enum core_ctl_state
|
|||||||
|
|
||||||
CORE_CTL_RETRO_CTX_POLL_CB,
|
CORE_CTL_RETRO_CTX_POLL_CB,
|
||||||
|
|
||||||
CORE_CTL_RETRO_SET_ENVIRONMENT
|
CORE_CTL_RETRO_SET_ENVIRONMENT,
|
||||||
|
|
||||||
|
CORE_CTL_RETRO_SERIALIZE_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct retro_ctx_size_info
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
} retro_ctx_size_info_t;
|
||||||
|
|
||||||
typedef struct retro_ctx_environ_info
|
typedef struct retro_ctx_environ_info
|
||||||
{
|
{
|
||||||
retro_environment_t env;
|
retro_environment_t env;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user