diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-10 18:34:27 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-10 18:34:27 +0000 |
| commit | 3729f4cbf3ab6a55e8aeb2c024655f0624028478 (patch) | |
| tree | 4788ec2048048a12e273a51e9f0bd9d0f55e4b71 | |
| parent | d7b0da8a0b39fe66e0eaeaadf8e2221fc4a614f8 (diff) | |
| download | zcatch-3729f4cbf3ab6a55e8aeb2c024655f0624028478.tar.gz zcatch-3729f4cbf3ab6a55e8aeb2c024655f0624028478.zip | |
fixed error that occurs when you try to free the invalid texture texture
| -rw-r--r-- | src/engine/client/ec_gfx.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/engine/client/ec_gfx.c b/src/engine/client/ec_gfx.c index 24848deb..36e9e9fa 100644 --- a/src/engine/client/ec_gfx.c +++ b/src/engine/client/ec_gfx.c @@ -78,6 +78,8 @@ static float screen_y0 = 0; static float screen_x1 = 0; static float screen_y1 = 0; +static int invalid_texture = 0; + typedef struct { GLuint tex; @@ -221,7 +223,7 @@ int gfx_init() } atexit(SDL_Quit); - + if(!no_gfx) { #ifdef CONF_FAMILY_WINDOWS @@ -308,7 +310,7 @@ int gfx_init() inp_init(); /* create null texture, will get id=0 */ - gfx_load_texture_raw(4,4,IMG_RGBA,null_texture_data,IMG_RGBA,TEXLOAD_NORESAMPLE); + invalid_texture = gfx_load_texture_raw(4,4,IMG_RGBA,null_texture_data,IMG_RGBA,TEXLOAD_NORESAMPLE); /* perform some tests */ /* pixeltest_dotesting(); */ @@ -413,8 +415,12 @@ void gfx_set_vsync(int val) int gfx_unload_texture(int index) { + if(index == invalid_texture) + return 0; + if(index < 0) return 0; + glDeleteTextures(1, &textures[index].tex); textures[index].next = first_free_texture; memory_usage -= textures[index].memsize; @@ -463,7 +469,7 @@ int gfx_load_texture_raw(int w, int h, int format, const void *data, int store_f /* don't waste memory on texture if we are stress testing */ if(config.dbg_stress || no_gfx) - return -1; + return invalid_texture; /* grab texture */ tex = first_free_texture; @@ -559,7 +565,7 @@ int gfx_load_texture(const char *filename, int store_format, int flags) IMAGE_INFO img; if(l < 3) - return 0; + return -1; if(gfx_load_png(&img, filename)) { if (store_format == IMG_AUTO) @@ -570,7 +576,7 @@ int gfx_load_texture(const char *filename, int store_format, int flags) return id; } - return 0; + return invalid_texture; } int gfx_load_png(IMAGE_INFO *img, const char *filename) @@ -711,7 +717,9 @@ void gfx_texture_set(int slot) dbg_assert(drawing == 0, "called gfx_texture_set within begin"); if(no_gfx) return; if(slot == -1) + { glDisable(GL_TEXTURE_2D); + } else { glEnable(GL_TEXTURE_2D); |