Pass polymodel &to free_model

This commit is contained in:
Kp 2017-02-19 19:33:44 +00:00
parent 1a7659897a
commit a6cd87613c
3 changed files with 7 additions and 8 deletions

View file

@ -145,7 +145,7 @@ void draw_model_picture(grs_canvas &, uint_fast32_t mn, const vms_angvec *orient
#define MAX_POLYOBJ_TEXTURES 50
#elif defined(DXX_BUILD_DESCENT_II)
// free up a model, getting rid of all its memory
void free_model(polymodel *po);
void free_model(polymodel &po);
#define MAX_POLYOBJ_TEXTURES 100
constexpr unsigned N_D2_POLYGON_MODELS = 166;

View file

@ -400,9 +400,8 @@ static void bm_free_extra_objbitmaps()
static void bm_free_extra_models()
{
auto base = std::min(N_D2_POLYGON_MODELS, exit_modelnum);
range_for (auto &p, partial_range(Polygon_models, base, N_polygon_models))
free_model(&p);
N_polygon_models = base;
range_for (auto &p, partial_range(Polygon_models, base, exchange(N_polygon_models, base)))
free_model(p);
}
//type==1 means 1.1, type==2 means 1.2 (with weapons)
@ -529,7 +528,7 @@ void load_robot_replacements(const d_fname &level_name)
if (i<0 || i>=N_polygon_models)
Error("Polygon model (%d) out of range in (%s). Range = [0..%d].",i,static_cast<const char *>(level_name),N_polygon_models-1);
free_model(&Polygon_models[i]);
free_model(Polygon_models[i]);
polymodel_read(&Polygon_models[i], fp);
polygon_model_data_read(&Polygon_models[i], fp);

View file

@ -491,9 +491,9 @@ void read_model_guns(const char *filename, reactor &r)
#if defined(DXX_BUILD_DESCENT_I)
static
#endif
void free_model(polymodel *po)
void free_model(polymodel &po)
{
po->model_data.reset();
po.model_data.reset();
}
array<grs_bitmap *, MAX_POLYOBJ_TEXTURES> texture_list;
@ -574,7 +574,7 @@ void draw_polygon_model(grs_canvas &canvas, const vms_vector &pos,const vms_matr
void free_polygon_models()
{
range_for (auto &i, partial_range(Polygon_models, N_polygon_models))
free_model(&i);
free_model(i);
}
}