mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
Create RARCH_DISPLAY_CTL_DEINIT_VIDEO_CACHE_CONTEXT
This commit is contained in:
parent
3e69eb5a8e
commit
702d9d4728
@ -298,7 +298,8 @@ void *video_driver_get_ptr(bool force_nonthreaded_data)
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (settings->video.threaded
|
||||
&& !video_driver_state.hw_render_callback.context_type && !force_nonthreaded_data)
|
||||
&& !video_driver_state.hw_render_callback.context_type
|
||||
&& !force_nonthreaded_data)
|
||||
return rarch_threaded_video_get_ptr(NULL);
|
||||
#endif
|
||||
|
||||
@ -524,23 +525,12 @@ static void deinit_pixel_converter(void)
|
||||
video_driver_scaler_ptr = NULL;
|
||||
}
|
||||
|
||||
void video_driver_callback_destroy_context(void)
|
||||
{
|
||||
const struct retro_hw_render_callback *hw_render =
|
||||
(const struct retro_hw_render_callback*)video_driver_callback();
|
||||
if (hw_render->context_destroy)
|
||||
hw_render->context_destroy();
|
||||
|
||||
memset(&video_driver_state.hw_render_callback, 0,
|
||||
sizeof(video_driver_state.hw_render_callback));
|
||||
}
|
||||
|
||||
static bool uninit_video_input(void)
|
||||
{
|
||||
event_cmd_ctl(EVENT_CMD_OVERLAY_DEINIT, NULL);
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL))
|
||||
video_driver_callback_destroy_context();
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEINIT_VIDEO_CACHE_CONTEXT, NULL);
|
||||
|
||||
if (
|
||||
!input_driver_ctl(RARCH_INPUT_CTL_OWNS_DRIVER, NULL) &&
|
||||
@ -1711,6 +1701,13 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_OWNS_DRIVER:
|
||||
return video_driver_data_own;
|
||||
case RARCH_DISPLAY_CTL_DEINIT_VIDEO_CACHE_CONTEXT:
|
||||
if (hw_render->context_destroy)
|
||||
hw_render->context_destroy();
|
||||
|
||||
memset(&video_driver_state.hw_render_callback, 0,
|
||||
sizeof(video_driver_state.hw_render_callback));
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT:
|
||||
video_driver_cache_context = true;
|
||||
break;
|
||||
|
@ -140,6 +140,7 @@ enum rarch_display_ctl_state
|
||||
RARCH_DISPLAY_CTL_SET_OWN_DRIVER,
|
||||
RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER,
|
||||
RARCH_DISPLAY_CTL_OWNS_DRIVER,
|
||||
RARCH_DISPLAY_CTL_DEINIT_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT,
|
||||
@ -432,7 +433,6 @@ float video_driver_get_aspect_ratio(void);
|
||||
void video_driver_set_aspect_ratio_value(float value);
|
||||
|
||||
struct retro_hw_render_callback *video_driver_callback(void);
|
||||
void video_driver_callback_destroy_context(void);
|
||||
|
||||
rarch_softfilter_t *video_driver_frame_filter_get_ptr(void);
|
||||
|
||||
|
@ -309,7 +309,7 @@ bool core_ctl(enum core_ctl_state state, void *data)
|
||||
uninit_libretro_sym(&core);
|
||||
break;
|
||||
case CORE_CTL_RETRO_UNLOAD_GAME:
|
||||
video_driver_callback_destroy_context();
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEINIT_VIDEO_CACHE_CONTEXT, NULL);
|
||||
core.retro_unload_game();
|
||||
break;
|
||||
case CORE_CTL_RETRO_RUN:
|
||||
|
Loading…
x
Reference in New Issue
Block a user