From 08425d978ccfe7d7af44d09f4c73ceb462c9ba02 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 17 May 2018 17:59:42 +0200 Subject: [PATCH] Create d3d9_renderchain_destroy_passes_and_luts --- gfx/drivers_renderchain/d3d9_cg_renderchain.c | 25 +---------------- .../d3d9_hlsl_renderchain.c | 25 +---------------- gfx/drivers_renderchain/d3d9_renderchain.h | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+), 48 deletions(-) diff --git a/gfx/drivers_renderchain/d3d9_cg_renderchain.c b/gfx/drivers_renderchain/d3d9_cg_renderchain.c index 7e175017a9..e6ec806353 100644 --- a/gfx/drivers_renderchain/d3d9_cg_renderchain.c +++ b/gfx/drivers_renderchain/d3d9_cg_renderchain.c @@ -644,30 +644,7 @@ void d3d9_cg_renderchain_free(void *data) return; d3d9_cg_destroy_resources(chain); - - if (chain->chain.passes) - { - unsigned i; - - for (i = 0; i < chain->chain.passes->count; i++) - { - if (chain->chain.passes->data[i].attrib_map) - free(chain->chain.passes->data[i].attrib_map); - } - - shader_pass_vector_list_free(chain->chain.passes); - - chain->chain.passes = NULL; - } - - lut_info_vector_list_free(chain->chain.luts); - unsigned_vector_list_free(chain->chain.bound_tex); - unsigned_vector_list_free(chain->chain.bound_vert); - - chain->chain.luts = NULL; - chain->chain.bound_tex = NULL; - chain->chain.bound_vert = NULL; - + d3d9_renderchain_destroy_passes_and_luts(&chain->chain); d3d9_cg_deinit_context_state(chain); free(chain); diff --git a/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c b/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c index bf4d7c8ade..19a359c592 100644 --- a/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c +++ b/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c @@ -765,30 +765,7 @@ static void hlsl_d3d9_renderchain_free(void *data) hlsl_deinit(chain->shader_pipeline); d3d9_hlsl_destroy_resources(chain); - - if (chain->chain.passes) - { - unsigned i; - - for (i = 0; i < chain->chain.passes->count; i++) - { - if (chain->chain.passes->data[i].attrib_map) - free(chain->chain.passes->data[i].attrib_map); - } - - shader_pass_vector_list_free(chain->chain.passes); - - chain->chain.passes = NULL; - } - - lut_info_vector_list_free(chain->chain.luts); - unsigned_vector_list_free(chain->chain.bound_tex); - unsigned_vector_list_free(chain->chain.bound_vert); - - chain->chain.luts = NULL; - chain->chain.bound_tex = NULL; - chain->chain.bound_vert = NULL; - + d3d9_renderchain_destroy_passes_and_luts(&chain->chain); free(chain); } diff --git a/gfx/drivers_renderchain/d3d9_renderchain.h b/gfx/drivers_renderchain/d3d9_renderchain.h index e3ae630d79..8f7047b7e6 100644 --- a/gfx/drivers_renderchain/d3d9_renderchain.h +++ b/gfx/drivers_renderchain/d3d9_renderchain.h @@ -140,6 +140,33 @@ static INLINE bool d3d9_renderchain_add_lut(d3d9_renderchain_t *chain, return true; } +static INLINE void d3d9_renderchain_destroy_passes_and_luts( + d3d9_renderchain_t *chain) +{ + if (chain->passes) + { + unsigned i; + + for (i = 0; i < chain->passes->count; i++) + { + if (chain->passes->data[i].attrib_map) + free(chain->passes->data[i].attrib_map); + } + + shader_pass_vector_list_free(chain->passes); + + chain->passes = NULL; + } + + lut_info_vector_list_free(chain->luts); + unsigned_vector_list_free(chain->bound_tex); + unsigned_vector_list_free(chain->bound_vert); + + chain->luts = NULL; + chain->bound_tex = NULL; + chain->bound_vert = NULL; +} + static INLINE void d3d9_renderchain_add_lut_internal( d3d9_renderchain_t *chain, unsigned index, unsigned i)