mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-13 05:10:42 +00:00
implemented the RETRO_ENVIRONMENT_SET_MEMORY_MAPS callback
This commit is contained in:
parent
16894e5a5a
commit
723463149e
36
dynamic.c
36
dynamic.c
@ -1213,6 +1213,42 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
system->ports.size = i;
|
||||
break;
|
||||
}
|
||||
|
||||
case RETRO_ENVIRONMENT_SET_MEMORY_MAPS:
|
||||
{
|
||||
unsigned i;
|
||||
const struct retro_memory_map *mmaps =
|
||||
(const struct retro_memory_map*)data;
|
||||
|
||||
RARCH_LOG("Environ SET_MEMORY_MAPS.\n");
|
||||
RARCH_LOG(" flags ptr offset start select disconn len addrspace\n");
|
||||
|
||||
for (i = 0; i < mmaps->num_descriptors; i++)
|
||||
{
|
||||
const struct retro_memory_descriptor *desc =
|
||||
&mmaps->descriptors[i];
|
||||
|
||||
RARCH_LOG("Memory map: %u\n", i + 1);
|
||||
RARCH_LOG(" %08X %p %08X %08X %08X %08X %08X %s\n",
|
||||
desc->flags, desc->ptr, desc->offset, desc->start,
|
||||
desc->select, desc->disconnect, desc->len,
|
||||
desc->addrspace ? desc->addrspace : "");
|
||||
}
|
||||
|
||||
free((void*)system->mmaps.descriptors);
|
||||
system->mmaps.num_descriptors = 0;
|
||||
|
||||
system->mmaps.descriptors = (struct retro_memory_descriptor*)
|
||||
calloc(mmaps->num_descriptors, sizeof(*system->mmaps.descriptors));
|
||||
|
||||
if (!system->mmaps.descriptors)
|
||||
return false;
|
||||
|
||||
memcpy((void*)system->mmaps.descriptors, mmaps->descriptors,
|
||||
mmaps->num_descriptors * sizeof(*system->mmaps.descriptors));
|
||||
system->mmaps.num_descriptors = mmaps->num_descriptors;
|
||||
break;
|
||||
}
|
||||
|
||||
case RETRO_ENVIRONMENT_SET_GEOMETRY:
|
||||
{
|
||||
|
17
runloop.c
17
runloop.c
@ -717,13 +717,20 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
|
||||
if (runloop_system.subsystem.data)
|
||||
free(runloop_system.subsystem.data);
|
||||
runloop_system.subsystem.data = NULL;
|
||||
runloop_system.subsystem.size = 0;
|
||||
|
||||
if (runloop_system.ports.data)
|
||||
free(runloop_system.ports.data);
|
||||
runloop_system.subsystem.size = 0;
|
||||
runloop_system.ports.data = NULL;
|
||||
runloop_system.ports.size = 0;
|
||||
runloop_key_event = NULL;
|
||||
runloop_frontend_key_event = NULL;
|
||||
runloop_system.ports.data = NULL;
|
||||
runloop_system.ports.size = 0;
|
||||
|
||||
if (runloop_system.mmaps.descriptors)
|
||||
free((void *)runloop_system.mmaps.descriptors);
|
||||
runloop_system.mmaps.descriptors = NULL;
|
||||
runloop_system.mmaps.num_descriptors = 0;
|
||||
|
||||
runloop_key_event = NULL;
|
||||
runloop_frontend_key_event = NULL;
|
||||
|
||||
audio_driver_unset_callback();
|
||||
memset(&runloop_system, 0, sizeof(rarch_system_info_t));
|
||||
|
Loading…
x
Reference in New Issue
Block a user