diff --git a/gfx/video_driver.c b/gfx/video_driver.c index e0fafadcad..4566a8c59b 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -512,7 +512,7 @@ static bool uninit_video_input(void) if ( !driver->input_data_own && - (driver->input_data != video_data) + !input_driver_data_ptr_is_same(video_data) ) input_driver_ctl(RARCH_INPUT_CTL_DEINIT, NULL); diff --git a/input/input_driver.c b/input/input_driver.c index aca66c3fc2..f1ee659f00 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -621,6 +621,7 @@ retro_input_t input_keys_pressed(void) return ret; } + void **input_driver_get_data_ptr(void) { driver_t *driver = driver_get_ptr(); @@ -629,6 +630,14 @@ void **input_driver_get_data_ptr(void) return (void**)&driver->input_data; } +bool input_driver_data_ptr_is_same(void *data) +{ + driver_t *driver = driver_get_ptr(); + if (!driver) + return false; + return (driver->input_data == data); +} + bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) { driver_t *driver = driver_get_ptr(); diff --git a/input/input_driver.h b/input/input_driver.h index a34d3a4654..e0c15f2578 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -259,6 +259,8 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data); void **input_driver_get_data_ptr(void); +bool input_driver_data_ptr_is_same(void *data); + #ifdef __cplusplus } #endif