diff --git a/driver.h b/driver.h index 3313ad8880..93bca98ef0 100644 --- a/driver.h +++ b/driver.h @@ -687,6 +687,10 @@ extern const menu_ctx_driver_t menu_ctx_lakka; extern const menu_ctx_driver_backend_t menu_ctx_backend_common; #ifdef HAVE_FILTERS_BUILTIN +extern const struct softfilter_implementation *blargg_ntsc_snes_rf_get_implementation(softfilter_simd_mask_t simd); +extern const struct softfilter_implementation *blargg_ntsc_snes_composite_get_implementation(softfilter_simd_mask_t simd); +extern const struct softfilter_implementation *blargg_ntsc_snes_svideo_get_implementation(softfilter_simd_mask_t simd); +extern const struct softfilter_implementation *blargg_ntsc_snes_rgb_get_implementation(softfilter_simd_mask_t simd); extern const struct softfilter_implementation *twoxbr_get_implementation(softfilter_simd_mask_t simd); extern const struct softfilter_implementation *epx_get_implementation(softfilter_simd_mask_t simd); extern const struct softfilter_implementation *twoxsai_get_implementation(softfilter_simd_mask_t simd); diff --git a/gfx/filter.c b/gfx/filter.c index 46b2d0fb18..7d8c72966d 100644 --- a/gfx/filter.c +++ b/gfx/filter.c @@ -88,6 +88,10 @@ struct rarch_softfilter static const struct softfilter_implementation *(*softfilter_drivers[]) (softfilter_simd_mask_t) = { NULL, + &blargg_ntsc_snes_rf_get_implementation, + &blargg_ntsc_snes_composite_get_implementation, + &blargg_ntsc_snes_svideo_get_implementation, + &blargg_ntsc_snes_rgb_get_implementation, &twoxbr_get_implementation, &darken_get_implementation, &twoxsai_get_implementation, diff --git a/gfx/filters/blargg_ntsc_snes_composite.c b/gfx/filters/blargg_ntsc_snes_composite.c index d9bb63b25f..3e4a562762 100755 --- a/gfx/filters/blargg_ntsc_snes_composite.c +++ b/gfx/filters/blargg_ntsc_snes_composite.c @@ -81,12 +81,6 @@ static void blargg_ntsc_snes_composite_initialize(void) burst_toggle_composite = (setup.merge_fields ? 0 : 1); } -void terminate(void) -{ - if(ntsc_composite) - free(ntsc_composite); -} - static void blargg_ntsc_snes_composite_generic_output(void *data, unsigned *out_width, unsigned *out_height, unsigned width, unsigned height) { @@ -98,6 +92,10 @@ static void blargg_ntsc_snes_composite_generic_output(void *data, unsigned *out_ static void blargg_ntsc_snes_composite_generic_destroy(void *data) { struct filter_data *filt = (struct filter_data*)data; + + if(ntsc_composite) + free(ntsc_composite); + free(filt->workers); free(filt); } diff --git a/gfx/filters/blargg_ntsc_snes_rf.c b/gfx/filters/blargg_ntsc_snes_rf.c index 3f368dd5dc..51abf91a41 100755 --- a/gfx/filters/blargg_ntsc_snes_rf.c +++ b/gfx/filters/blargg_ntsc_snes_rf.c @@ -81,12 +81,6 @@ static void blargg_ntsc_snes_rf_initialize(void) burst_toggle_rf = (setup.merge_fields ? 0 : 1); } -void terminate(void) -{ - if(ntsc_rf) - free(ntsc_rf); -} - static void blargg_ntsc_snes_rf_generic_output(void *data, unsigned *out_width, unsigned *out_height, unsigned width, unsigned height) { @@ -98,6 +92,10 @@ static void blargg_ntsc_snes_rf_generic_output(void *data, unsigned *out_width, static void blargg_ntsc_snes_rf_generic_destroy(void *data) { struct filter_data *filt = (struct filter_data*)data; + + if(ntsc_rf) + free(ntsc_rf); + free(filt->workers); free(filt); } diff --git a/gfx/filters/blargg_ntsc_snes_rgb.c b/gfx/filters/blargg_ntsc_snes_rgb.c index de0a9ce066..d14406b647 100755 --- a/gfx/filters/blargg_ntsc_snes_rgb.c +++ b/gfx/filters/blargg_ntsc_snes_rgb.c @@ -81,12 +81,6 @@ static void blargg_ntsc_snes_rgb_initialize(void) burst_toggle_rgb = (setup.merge_fields ? 0 : 1); } -void terminate(void) -{ - if(ntsc_rgb) - free(ntsc_rgb); -} - static void blargg_ntsc_snes_rgb_generic_output(void *data, unsigned *out_width, unsigned *out_height, unsigned width, unsigned height) { @@ -98,6 +92,10 @@ static void blargg_ntsc_snes_rgb_generic_output(void *data, unsigned *out_width, static void blargg_ntsc_snes_rgb_generic_destroy(void *data) { struct filter_data *filt = (struct filter_data*)data; + + if(ntsc_rgb) + free(ntsc_rgb); + free(filt->workers); free(filt); } diff --git a/gfx/filters/blargg_ntsc_snes_svideo.c b/gfx/filters/blargg_ntsc_snes_svideo.c index 3b9154c49b..9f33955a14 100755 --- a/gfx/filters/blargg_ntsc_snes_svideo.c +++ b/gfx/filters/blargg_ntsc_snes_svideo.c @@ -81,12 +81,6 @@ static void blargg_ntsc_snes_svideo_initialize(void) burst_toggle_svideo = (setup.merge_fields ? 0 : 1); } -void terminate(void) -{ - if(ntsc_svideo) - free(ntsc_svideo); -} - static void blargg_ntsc_snes_svideo_generic_output(void *data, unsigned *out_width, unsigned *out_height, unsigned width, unsigned height) { @@ -98,6 +92,10 @@ static void blargg_ntsc_snes_svideo_generic_output(void *data, unsigned *out_wid static void blargg_ntsc_snes_svideo_generic_destroy(void *data) { struct filter_data *filt = (struct filter_data*)data; + + if(ntsc_svideo) + free(ntsc_svideo); + free(filt->workers); free(filt); } diff --git a/griffin/griffin.c b/griffin/griffin.c index d5a1ebe025..74952163c4 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -476,6 +476,10 @@ FILTERS #include "../gfx/filters/darken.c" #include "../gfx/filters/epx.c" #include "../gfx/filters/scale2x.c" +#include "../gfx/filters/blargg_ntsc_snes_rf.c" +#include "../gfx/filters/blargg_ntsc_snes_composite.c" +#include "../gfx/filters/blargg_ntsc_snes_svideo.c" +#include "../gfx/filters/blargg_ntsc_snes_rgb.c" #include "../audio/filters/echo.c" #ifndef _WIN32