Use unique_ptr for circle_array_init_2

This commit is contained in:
Kp 2014-08-05 02:32:55 +00:00
parent be86e384b8
commit 11c22409ad

View file

@ -98,7 +98,7 @@ static int ogl_rgba_internalformat = GL_RGBA8;
static int ogl_rgb_internalformat = GL_RGB8; static int ogl_rgb_internalformat = GL_RGB8;
#endif #endif
static std::unique_ptr<GLfloat[]> sphere_va, circle_va, disk_va; static std::unique_ptr<GLfloat[]> sphere_va, circle_va, disk_va;
static GLfloat *secondary_lva[3]={NULL, NULL, NULL}; static array<std::unique_ptr<GLfloat[]>, 3> secondary_lva;
static int r_polyc,r_tpolyc,r_bitmapc,r_ubitbltc; static int r_polyc,r_tpolyc,r_bitmapc,r_ubitbltc;
int r_upixelc; int r_upixelc;
#define f2glf(x) (f2fl(x)) #define f2glf(x) (f2fl(x))
@ -230,13 +230,7 @@ void ogl_smash_texture_list_internal(void){
sphere_va.reset(); sphere_va.reset();
circle_va.reset(); circle_va.reset();
disk_va.reset(); disk_va.reset();
for(i = 0; i < 3; i++) { secondary_lva = {};
if (secondary_lva[i] != NULL)
{
d_free(secondary_lva[i]);
secondary_lva[i] = NULL;
}
}
for (i=0;i<OGL_TEXTURE_LIST_SIZE;i++){ for (i=0;i<OGL_TEXTURE_LIST_SIZE;i++){
if (ogl_texture_list[i].handle>0){ if (ogl_texture_list[i].handle>0){
glDeleteTextures( 1, &ogl_texture_list[i].handle ); glDeleteTextures( 1, &ogl_texture_list[i].handle );
@ -553,13 +547,11 @@ static std::unique_ptr<GLfloat[]> circle_array_init(int nsides)
return vertex_array; return vertex_array;
} }
static GLfloat *circle_array_init_2(int nsides, float xsc, float xo, float ysc, float yo) static std::unique_ptr<GLfloat[]> circle_array_init_2(int nsides, float xsc, float xo, float ysc, float yo)
{ {
int i; int i;
float ang; float ang;
GLfloat *vertex_array; std::unique_ptr<GLfloat[]> vertex_array(new GLfloat[nsides * 2]);
MALLOC(vertex_array, GLfloat, nsides * 2);
for(i = 0; i < nsides; i++) { for(i = 0; i < nsides; i++) {
ang = 2.0 * M_PI * i / nsides; ang = 2.0 * M_PI * i / nsides;
vertex_array[i * 2] = cosf(ang) * xsc + xo; vertex_array[i * 2] = cosf(ang) * xsc + xo;
@ -709,7 +701,7 @@ void ogl_draw_vertex_reticle(int cross,int primary,int secondary,int color,int a
glColorPointer(4, GL_FLOAT, 0, bright_lca); glColorPointer(4, GL_FLOAT, 0, bright_lca);
if(!secondary_lva[0]) if(!secondary_lva[0])
secondary_lva[0] = circle_array_init_2(16, 2.0, -10.0, 2.0, -2.0); secondary_lva[0] = circle_array_init_2(16, 2.0, -10.0, 2.0, -2.0);
ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[0]); ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[0].get());
//right secondary //right secondary
if (secondary != 2) if (secondary != 2)
glColorPointer(4, GL_FLOAT, 0, dark_lca); glColorPointer(4, GL_FLOAT, 0, dark_lca);
@ -717,7 +709,7 @@ void ogl_draw_vertex_reticle(int cross,int primary,int secondary,int color,int a
glColorPointer(4, GL_FLOAT, 0, bright_lca); glColorPointer(4, GL_FLOAT, 0, bright_lca);
if(!secondary_lva[1]) if(!secondary_lva[1])
secondary_lva[1] = circle_array_init_2(16, 2.0, 10.0, 2.0, -2.0); secondary_lva[1] = circle_array_init_2(16, 2.0, 10.0, 2.0, -2.0);
ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[1]); ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[1].get());
} }
else { else {
//bottom/middle secondary //bottom/middle secondary
@ -727,7 +719,7 @@ void ogl_draw_vertex_reticle(int cross,int primary,int secondary,int color,int a
glColorPointer(4, GL_FLOAT, 0, bright_lca); glColorPointer(4, GL_FLOAT, 0, bright_lca);
if(!secondary_lva[2]) if(!secondary_lva[2])
secondary_lva[2] = circle_array_init_2(16, 2.0, 0.0, 2.0, -8.0); secondary_lva[2] = circle_array_init_2(16, 2.0, 0.0, 2.0, -8.0);
ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[2]); ogl_drawcircle(16, GL_LINE_LOOP, secondary_lva[2].get());
} }
//glDisableClientState(GL_VERTEX_ARRAY); //glDisableClientState(GL_VERTEX_ARRAY);