diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game.cpp | 1 | ||||
| -rw-r--r-- | src/render/gl.cpp | 13 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/game.cpp b/src/game.cpp index 8497b6a..523e884 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -226,5 +226,6 @@ void game_on_tick( GAME_DATA* game ) { _profiled void game_destroy( GAME_DATA *game ) { gl_batch_destroy( game->render.batch_2d ); gl_batch_destroy( game->render.batch_3d ); + gl_destroy( game->gl ); free( game ); } diff --git a/src/render/gl.cpp b/src/render/gl.cpp index 44d5079..6ab2117 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -250,7 +250,8 @@ void gl_destroy( GL_DATA *gl ) { if( gl->window ) SDL_DestroyWindow( gl->window ); - free( gl ); + SDL_Quit(); + delete gl; } void gl_update_window( GL_DATA* gl, I32* size ) { @@ -305,7 +306,9 @@ STAT gl_shader_compile( GL_DATA* gl, GL_SHADER_DEF* shader ) { return STAT_OK; } -void gl_shader_destroy( GL_DATA* gl, GL_SHADER_DEF* shader ) {} +void gl_shader_destroy( GL_DATA* gl, GL_SHADER_DEF* shader ) { + shader->code.~STR(); +} GL_SHADER_PROGRAM* gl_program_create( GL_DATA* gl, const char* name, U32 size ) { GL_SHADER_PROGRAM* program = (GL_SHADER_PROGRAM*)malloc( size ); @@ -324,6 +327,7 @@ GL_SHADER_PROGRAM* gl_program_create( GL_DATA* gl, const char* name, U32 size ) program->vsh.type = GL_VERTEX_SHADER; program->vsh.code = shader_code; + free( shader_code ); sprintf( shader_string, "../assets/shaders/%s.fsh", name ); shader_code = (char*)file_read( shader_string ); if( !shader_code ) { @@ -334,6 +338,7 @@ GL_SHADER_PROGRAM* gl_program_create( GL_DATA* gl, const char* name, U32 size ) program->fsh.name = name; program->fsh.type = GL_FRAGMENT_SHADER; program->fsh.code = shader_code; + free( shader_code ); program->name = name; program->gl = gl; @@ -402,9 +407,7 @@ void gl_program_destroy( GL_DATA* gl, GL_SHADER_PROGRAM* program ) { if( program->vsh.compiled ) gl_shader_destroy( gl, &program->vsh ); - I32 idx = gl->programs.idx_of( program ); - if( idx != -1 ) - gl->programs.erase( idx ); + free( program ); } GL_TEX2D* gl_texture_from_file( GL_DATA* gl, const char* name ) { |
