X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=resource_pool.cpp;h=7f813765c53ac1dd47c21d69dfd9bc552eb1b89c;hp=db449dd7084f412ef63551a04a823245f7a9eff1;hb=535fc8a0df75648968fd42c2f1ce8b150f5c2c13;hpb=7538612384304a9c209ac12fe07f2822427a5aeb diff --git a/resource_pool.cpp b/resource_pool.cpp index db449dd..7f81376 100644 --- a/resource_pool.cpp +++ b/resource_pool.cpp @@ -294,8 +294,8 @@ void ResourcePool::release_2d_texture(GLuint texture_num) texture_freelist_bytes += estimate_texture_size(texture_formats[texture_num]); while (texture_freelist_bytes > texture_freelist_max_bytes) { - GLuint free_texture_num = texture_freelist.front(); - texture_freelist.pop_front(); + GLuint free_texture_num = texture_freelist.back(); + texture_freelist.pop_back(); assert(texture_formats.count(free_texture_num) != 0); texture_freelist_bytes -= estimate_texture_size(texture_formats[free_texture_num]); texture_formats.erase(free_texture_num); @@ -401,6 +401,7 @@ void ResourcePool::cleanup_unlinked_fbos(void *context) pair key(context, fbo_num); assert(fbo_formats.count(key) != 0); if (fbo_formats[key].texture_num == 0) { + fbo_formats.erase(key); glDeleteFramebuffers(1, &fbo_num); check_error(); fbo_freelist[context].erase(freelist_it++); @@ -460,6 +461,9 @@ size_t ResourcePool::estimate_texture_size(const Texture2D &texture_format) case GL_R16F: bytes_per_pixel = 2; break; + case GL_RG8: + bytes_per_pixel = 2; + break; case GL_R8: bytes_per_pixel = 1; break;