return tex;
}
}
-
- // Recycle a glsl_texture with deleted glTexture.
- glsl_texture gtex = 0;
- for (int i = 0; i < texture_list.count(); ++i) {
- glsl_texture tex = (glsl_texture) texture_list.peek(i);
- if (!tex->used && !tex->width && !tex->height) {
- gtex = tex;
- break;
- }
- }
unlock();
GLuint tex = 0;
glGenTextures(1, &tex);
if (!tex) {
- glDeleteTextures(1, &tex);
return NULL;
}
+ glsl_texture gtex = new glsl_texture_s;
if (!gtex) {
- gtex = new glsl_texture_s;
- if (!gtex)
- return NULL;
+ glDeleteTextures(1, &tex);
+ return NULL;
}
glBindTexture( GL_TEXTURE_2D, tex );
void GlslManager::cleanupContext()
{
lock();
- for (int i = 0; i < texture_list.count(); ++i) {
- glsl_texture texture = (glsl_texture) texture_list.peek(i);
+ while (texture_list.peek_back()) {
+ glsl_texture texture = (glsl_texture) texture_list.peek_back();
glDeleteTextures(1, &texture->texture);
- texture->used = 0;
- texture->width = 0;
- texture->height = 0;
+ delete texture;
+ texture_list.pop_back();
}
if (pbo) {
glDeleteBuffers(1, &pbo->pbo);