diff --git a/pandatool/src/palettizer/destTextureImage.cxx b/pandatool/src/palettizer/destTextureImage.cxx index 83daa36189..4cdf63b4b8 100644 --- a/pandatool/src/palettizer/destTextureImage.cxx +++ b/pandatool/src/palettizer/destTextureImage.cxx @@ -88,6 +88,8 @@ copy(TextureImage *texture) { write(dest_image); } + + texture->release_source_image(); } //////////////////////////////////////////////////////////////////// diff --git a/pandatool/src/palettizer/paletteImage.cxx b/pandatool/src/palettizer/paletteImage.cxx index 06c2a09dca..8d63a93e45 100644 --- a/pandatool/src/palettizer/paletteImage.cxx +++ b/pandatool/src/palettizer/paletteImage.cxx @@ -654,6 +654,8 @@ update_image(bool redo_all) { if (pal->_shadow_color_type != (PNMFileType *)NULL) { _shadow_image.write(_image); } + + release_image(); } @@ -771,6 +773,18 @@ get_image() { } } +//////////////////////////////////////////////////////////////////// +// Function: PaletteImage::release_image +// Access: Public +// Description: Deallocates the memory allocated by a previous call to +// get_image(). +//////////////////////////////////////////////////////////////////// +void PaletteImage:: +release_image() { + _image.clear(); + _got_image = false; +} + //////////////////////////////////////////////////////////////////// // Function: PaletteImage::remove_image // Access: Private diff --git a/pandatool/src/palettizer/paletteImage.h b/pandatool/src/palettizer/paletteImage.h index 8e82078f3c..f1383f85e2 100644 --- a/pandatool/src/palettizer/paletteImage.h +++ b/pandatool/src/palettizer/paletteImage.h @@ -66,6 +66,7 @@ private: bool find_hole(int &x, int &y, int x_size, int y_size) const; TexturePlacement *find_overlap(int x, int y, int x_size, int y_size) const; void get_image(); + void release_image(); void remove_image(); // The ClearedRegion object keeps track of TexturePlacements that diff --git a/pandatool/src/palettizer/textureImage.cxx b/pandatool/src/palettizer/textureImage.cxx index f949f80256..7049a2b159 100644 --- a/pandatool/src/palettizer/textureImage.cxx +++ b/pandatool/src/palettizer/textureImage.cxx @@ -752,6 +752,22 @@ read_source_image() { return _source_image; } +//////////////////////////////////////////////////////////////////// +// Function: TextureImage::release_source_image +// Access: Public +// Description: Frees the memory that was allocated by a previous +// call to read_source_image(). The next time +// read_source_image() is called, it will have to read +// the disk again. +//////////////////////////////////////////////////////////////////// +void TextureImage:: +release_source_image() { + if (_read_source_image) { + _source_image.clear(); + _read_source_image = false; + } +} + //////////////////////////////////////////////////////////////////// // Function: TextureImage::set_source_image // Access: Public diff --git a/pandatool/src/palettizer/textureImage.h b/pandatool/src/palettizer/textureImage.h index 6eb9cda2c4..7a0181b0a8 100644 --- a/pandatool/src/palettizer/textureImage.h +++ b/pandatool/src/palettizer/textureImage.h @@ -89,6 +89,7 @@ public: void copy_unplaced(bool redo_all); const PNMImage &read_source_image(); + void release_source_image(); void set_source_image(const PNMImage &image); void read_header(); bool is_newer_than(const Filename &reference_filename);