From f5b2b8fdf76dda53eab7ced6fc818e34f3d62c47 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 23 Mar 2015 07:15:41 +0100 Subject: [PATCH] Create input_driver_free --- gfx/video_driver.c | 7 +++---- input/input_driver.c | 30 +++++++++++++++++------------- input/input_driver.h | 2 ++ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 2afbd3db4b..8c2b31f6ee 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -389,10 +389,9 @@ void uninit_video_input(void) if ( !driver->input_data_own && - (driver->input_data != driver->video_data) && - driver->input && - driver->input->free) - driver->input->free(driver->input_data); + (driver->input_data != driver->video_data) + ) + input_driver_free(); if ( !driver->video_data_own && diff --git a/input/input_driver.c b/input/input_driver.c index 4480467492..4032ca53a1 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -263,23 +263,27 @@ bool input_driver_grab_mouse(bool state) { driver_t *driver = driver_get_ptr(); - if (!driver) - return false; - if (!driver->input) - return false; - if (!driver->input->grab_mouse) - return false; - driver->input->grab_mouse(driver->input_data, state); - return true; + if (driver && driver->input && driver->input->grab_mouse) + { + driver->input->grab_mouse(driver->input_data, state); + return true; + } + return false; } void *input_driver_init(void) { driver_t *driver = driver_get_ptr(); - if (!driver) - return NULL; - if (!driver->input) - return NULL; - return driver->input->init(); + if (driver && driver->input && driver->input->init) + return driver->input->init(); + return NULL; +} + +void input_driver_free(void) +{ + driver_t *driver = driver_get_ptr(); + + if (driver && driver->input && driver->input->free) + driver->input->free(driver->input_data); } diff --git a/input/input_driver.h b/input/input_driver.h index 2df2ab1ab2..535def4b50 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -152,6 +152,8 @@ bool input_driver_grab_mouse(bool state); void *input_driver_init(void); +void input_driver_free(void); + #ifdef __cplusplus } #endif