diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 3309024dbb..74debfdc2d 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -3213,6 +3213,8 @@ static void gl2_free(void *data) gl2_renderchain_deinit_hw_render(gl, (gl2_renderchain_data_t*)gl->renderchain_data); gl2_deinit_chain(gl); + if (gl->ctx_driver && gl->ctx_driver->destroy) + gl->ctx_driver->destroy(gl->ctx_data); video_context_driver_free(); gl2_destroy_resources(gl); diff --git a/gfx/drivers/gl1.c b/gfx/drivers/gl1.c index fab40c392e..53b823c88a 100644 --- a/gfx/drivers/gl1.c +++ b/gfx/drivers/gl1.c @@ -1032,6 +1032,8 @@ static void gl1_gfx_free(void *data) gl1->extensions = NULL; font_driver_free_osd(); + if (gl1->ctx_driver && gl1->ctx_driver->destroy) + gl1->ctx_driver->destroy(gl1->ctx_data); video_context_driver_free(); free(gl1); } diff --git a/gfx/drivers/gl_core.c b/gfx/drivers/gl_core.c index cfbe277a54..329302caf1 100644 --- a/gfx/drivers/gl_core.c +++ b/gfx/drivers/gl_core.c @@ -1545,6 +1545,8 @@ static void gl_core_free(void *data) gl_core_context_bind_hw_render(gl, false); font_driver_free_osd(); gl_core_destroy_resources(gl); + if (gl->ctx_driver && gl->ctx_driver->destroy) + gl->ctx_driver->destroy(gl->ctx_data); video_context_driver_free(); } diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index 5ec18ac286..cf2c26b006 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -309,6 +309,8 @@ static void vg_free(void *data) vgDestroyPaint(vg->mPaintBg); } + if (vg->ctx_driver && vg->ctx_driver->destroy) + vg->ctx_driver->destroy(vg->ctx_data); video_context_driver_free(); free(vg); diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 855dc00743..e6dc695a44 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -972,6 +972,8 @@ static void vulkan_free(void *data) if (vk->filter_chain) vulkan_filter_chain_free((vulkan_filter_chain_t*)vk->filter_chain); + if (vk->ctx_driver && vk->ctx_driver->destroy) + vk->ctx_driver->destroy(vk->ctx_data); video_context_driver_free(); } diff --git a/retroarch.c b/retroarch.c index 36a343822e..08fea1253d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -33486,8 +33486,6 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, void video_context_driver_free(void) { struct rarch_state *p_rarch = &rarch_st; - if (p_rarch->current_video_context.destroy) - p_rarch->current_video_context.destroy(p_rarch->video_context_data); video_context_driver_destroy(); p_rarch->video_context_data = NULL; } @@ -33541,12 +33539,14 @@ bool video_context_driver_input_driver(gfx_ctx_input_t *inp) settings_t *settings = p_rarch->configuration_settings; const char *joypad_name = settings->arrays.input_joypad_driver; - if (!p_rarch->current_video_context.input_driver) - return false; - p_rarch->current_video_context.input_driver( - p_rarch->video_context_data, joypad_name, - inp->input, inp->input_data); - return true; + if (p_rarch && p_rarch->current_video_context.input_driver) + { + p_rarch->current_video_context.input_driver( + p_rarch->video_context_data, joypad_name, + inp->input, inp->input_data); + return true; + } + return false; } bool video_context_driver_get_ident(gfx_ctx_ident_t *ident)