From ad6f98dc15c646206a3eb59d0da9b4049c9d01b6 Mon Sep 17 00:00:00 2001 From: Lionel Flandrin Date: Thu, 21 Jan 2016 23:06:13 +0100 Subject: [PATCH] Don't lose the core-provided hw_render struct when reseting the context --- command_event.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/command_event.c b/command_event.c index acff1eae7f..a0ca72090b 100644 --- a/command_event.c +++ b/command_event.c @@ -1298,8 +1298,19 @@ bool event_command(enum event_command cmd) } break; case EVENT_CMD_RESET_CONTEXT: - event_command(EVENT_CMD_DRIVERS_DEINIT); - event_command(EVENT_CMD_DRIVERS_INIT); + { + // EVENT_CMD_DRIVERS_DEINIT clears the callback struct so we + // need to make sure to keep a copy + struct retro_hw_render_callback hw_render; + + memcpy(&hw_render, video_driver_callback(), sizeof(hw_render)); + + event_command(EVENT_CMD_DRIVERS_DEINIT); + + memcpy(video_driver_callback(), &hw_render, sizeof(hw_render)); + + event_command(EVENT_CMD_DRIVERS_INIT); + } break; case EVENT_CMD_QUIT_RETROARCH: rarch_ctl(RARCH_CTL_FORCE_QUIT, NULL);