From 5abe3a9e1c2b54fd3f8ae323b9f8d99298c52af4 Mon Sep 17 00:00:00 2001 From: David Rose Date: Sun, 3 Jun 2007 16:31:43 +0000 Subject: [PATCH] better respect for keep-texture-ram and preload-textures in the presence of a bam-cache --- panda/src/gobj/texture.cxx | 2 ++ panda/src/gobj/texturePool.cxx | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/panda/src/gobj/texture.cxx b/panda/src/gobj/texture.cxx index 7869fc86f8..e9fabb1fcd 100644 --- a/panda/src/gobj/texture.cxx +++ b/panda/src/gobj/texture.cxx @@ -2392,7 +2392,9 @@ reload_ram_image() { gobj_cat.info() << "Texture " << get_name() << " reloaded from disk cache.\n"; PT(Texture) tex = DCAST(Texture, record->extract_data()); + bool keep_ram_image = _keep_ram_image; (*this) = (*tex); + _keep_ram_image = keep_ram_image; return; } } diff --git a/panda/src/gobj/texturePool.cxx b/panda/src/gobj/texturePool.cxx index e451ad66e0..6f50fb7314 100644 --- a/panda/src/gobj/texturePool.cxx +++ b/panda/src/gobj/texturePool.cxx @@ -282,6 +282,11 @@ ns_load_texture(const Filename &orig_filename, int primary_file_num_channels, gobj_cat.info() << "Texture " << filename << " found in disk cache.\n"; tex = DCAST(Texture, record->extract_data()); + if (!preload_textures) { + // But drop the RAM until we need it. + tex->clear_ram_image(); + } + tex->set_keep_ram_image(false); } } } @@ -329,6 +334,11 @@ ns_load_texture(const Filename &orig_filename, int primary_file_num_channels, // Store the on-disk cache record for next time. record->set_data(tex, false); cache->store(record); + + if (!preload_textures) { + // And now drop the RAM until we need it. + tex->clear_ram_image(); + } } nassertr(!tex->get_fullpath().empty(), tex);