From f297adab478e2bf248b9f12091944ba47df4f2f2 Mon Sep 17 00:00:00 2001 From: Caldfir Date: Sat, 26 May 2012 14:09:40 -0700 Subject: Removed a memory leak associated with blocks that were being permanently cached. --- BlockFactory.cpp | 43 +++++++++++++++++++++++++++---------------- BlockFactory.h | 2 ++ main.cpp | 4 ++++ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/BlockFactory.cpp b/BlockFactory.cpp index 03c6e8a..5d9d63b 100644 --- a/BlockFactory.cpp +++ b/BlockFactory.cpp @@ -6,32 +6,43 @@ BlockFactory blockFactory; BlockFactory::BlockFactory(void) { - poolSize = 0; + poolSize = 0; + blocksCreated = 0; } BlockFactory::~BlockFactory(void) { - for(uint32_t i=0; i 0 ){ - poolSize--; - Block* b = pool[poolSize]; - pool.pop_back(); - return b; - } - - //pool is empty(full), just New up a new block - Block* b = (Block*) malloc( sizeof(Block) ); - return b; + if( poolSize > 0 ){ + poolSize--; + Block* b = pool[poolSize]; + pool.pop_back(); + return b; + } + + //pool is empty(full), just New up a new block + blocksCreated++; + Block* b = (Block*) malloc( sizeof(Block) ); + return b; } void BlockFactory::deleteBlock(Block *b){ - poolSize++; - pool.push_back( b ); + if(2*poolSize < blocksCreated){ + poolSize++; + pool.push_back( b ); + } + else{ + blocksCreated--; + free( b ); + } } diff --git a/BlockFactory.h b/BlockFactory.h index a122dd6..a8d2046 100644 --- a/BlockFactory.h +++ b/BlockFactory.h @@ -5,6 +5,7 @@ class BlockFactory { uint32_t poolSize; + uint32_t blocksCreated; vector pool; public: @@ -13,6 +14,7 @@ public: Block* allocateBlock( ); void deleteBlock( Block* ); uint32_t getPoolSize(){ return poolSize; } + uint32_t getBlocksCreated(){ return blocksCreated; } }; diff --git a/main.cpp b/main.cpp index 63cf86e..f76bac4 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,7 @@ using namespace std; #include "common.h" #include "Block.h" +#include "BlockFactory.h" #include "GUI.h" //#include "SpriteMaps.h" #include "GameBuildings.h" @@ -521,6 +522,9 @@ static void * stonesense_thread(ALLEGRO_THREAD * main_thread, void * parms) delete last; } + //need to explicitly tear down the current block factory + blockFactory.~BlockFactory(); + al_destroy_bitmap(IMGIcon); IMGIcon = 0; delete contentLoader; -- cgit v1.2.1 From e5b0504d9e2f50bff0526ba2e65e602479f17576 Mon Sep 17 00:00:00 2001 From: Caldfir Date: Sat, 26 May 2012 14:13:56 -0700 Subject: Switched large sprites to 128px form factor. --- resources/creatures/index.txt | 2 +- resources/creatures/large_128/crundle.png | Bin 0 -> 11784 bytes resources/creatures/large_128/crundle.xml | 23 + resources/creatures/large_128/domestic.png | Bin 0 -> 58026 bytes resources/creatures/large_128/domestic.xml | 114 +++++ resources/creatures/large_128/dwarf.xml | 786 +++++++++++++++++++++++++++++ resources/creatures/large_128/dwarff.png | Bin 0 -> 124081 bytes resources/creatures/large_128/dwarfm.png | Bin 0 -> 136301 bytes resources/creatures/large_128/index.txt | 7 + resources/creatures/large_128/jabber.png | Bin 0 -> 21623 bytes resources/creatures/large_128/jabber.xml | 23 + resources/creatures/large_128/wild.png | Bin 0 -> 11973 bytes resources/creatures/large_128/wild.xml | 22 + resources/creatures/large_256/.gitignore | 1 - resources/creatures/large_256/crundle.png | Bin 16026 -> 0 bytes resources/creatures/large_256/crundle.xml | 23 - resources/creatures/large_256/domestic.png | Bin 134035 -> 0 bytes resources/creatures/large_256/domestic.xml | 114 ----- resources/creatures/large_256/dwarf.xml | 786 ----------------------------- resources/creatures/large_256/dwarff.png | Bin 165363 -> 0 bytes resources/creatures/large_256/dwarfm.png | Bin 186687 -> 0 bytes resources/creatures/large_256/index.txt | 7 - resources/creatures/large_256/jabber.png | Bin 29431 -> 0 bytes resources/creatures/large_256/jabber.xml | 23 - resources/creatures/large_256/wild.png | Bin 15821 -> 0 bytes resources/creatures/large_256/wild.xml | 22 - 26 files changed, 976 insertions(+), 977 deletions(-) create mode 100644 resources/creatures/large_128/crundle.png create mode 100644 resources/creatures/large_128/crundle.xml create mode 100644 resources/creatures/large_128/domestic.png create mode 100644 resources/creatures/large_128/domestic.xml create mode 100644 resources/creatures/large_128/dwarf.xml create mode 100644 resources/creatures/large_128/dwarff.png create mode 100644 resources/creatures/large_128/dwarfm.png create mode 100644 resources/creatures/large_128/index.txt create mode 100644 resources/creatures/large_128/jabber.png create mode 100644 resources/creatures/large_128/jabber.xml create mode 100644 resources/creatures/large_128/wild.png create mode 100644 resources/creatures/large_128/wild.xml delete mode 100644 resources/creatures/large_256/.gitignore delete mode 100644 resources/creatures/large_256/crundle.png delete mode 100644 resources/creatures/large_256/crundle.xml delete mode 100644 resources/creatures/large_256/domestic.png delete mode 100644 resources/creatures/large_256/domestic.xml delete mode 100644 resources/creatures/large_256/dwarf.xml delete mode 100644 resources/creatures/large_256/dwarff.png delete mode 100644 resources/creatures/large_256/dwarfm.png delete mode 100644 resources/creatures/large_256/index.txt delete mode 100644 resources/creatures/large_256/jabber.png delete mode 100644 resources/creatures/large_256/jabber.xml delete mode 100644 resources/creatures/large_256/wild.png delete mode 100644 resources/creatures/large_256/wild.xml diff --git a/resources/creatures/index.txt b/resources/creatures/index.txt index ded7e65..b76a347 100644 --- a/resources/creatures/index.txt +++ b/resources/creatures/index.txt @@ -1,4 +1,4 @@ -large_256/index.txt +large_128/index.txt caravan_animals.xml diff --git a/resources/creatures/large_128/crundle.png b/resources/creatures/large_128/crundle.png new file mode 100644 index 0000000..939b3df Binary files /dev/null and b/resources/creatures/large_128/crundle.png differ diff --git a/resources/creatures/large_128/crundle.xml b/resources/creatures/large_128/crundle.xml new file mode 100644 index 0000000..b0487a9 --- /dev/null +++ b/resources/creatures/large_128/crundle.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/creatures/large_128/domestic.png b/resources/creatures/large_128/domestic.png new file mode 100644 index 0000000..b675a1f Binary files /dev/null and b/resources/creatures/large_128/domestic.png differ diff --git a/resources/creatures/large_128/domestic.xml b/resources/creatures/large_128/domestic.xml new file mode 100644 index 0000000..4761313 --- /dev/null +++ b/resources/creatures/large_128/domestic.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/creatures/large_128/dwarf.xml b/resources/creatures/large_128/dwarf.xml new file mode 100644 index 0000000..44a8589 --- /dev/null +++ b/resources/creatures/large_128/dwarf.xml @@ -0,0 +1,786 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/creatures/large_128/dwarff.png b/resources/creatures/large_128/dwarff.png new file mode 100644 index 0000000..e18fad1 Binary files /dev/null and b/resources/creatures/large_128/dwarff.png differ diff --git a/resources/creatures/large_128/dwarfm.png b/resources/creatures/large_128/dwarfm.png new file mode 100644 index 0000000..a1553ed Binary files /dev/null and b/resources/creatures/large_128/dwarfm.png differ diff --git a/resources/creatures/large_128/index.txt b/resources/creatures/large_128/index.txt new file mode 100644 index 0000000..d57f3e6 --- /dev/null +++ b/resources/creatures/large_128/index.txt @@ -0,0 +1,7 @@ +jabber.xml +crundle.xml + +wild.xml +domestic.xml + +dwarf.xml \ No newline at end of file diff --git a/resources/creatures/large_128/jabber.png b/resources/creatures/large_128/jabber.png new file mode 100644 index 0000000..9e1ab9a Binary files /dev/null and b/resources/creatures/large_128/jabber.png differ diff --git a/resources/creatures/large_128/jabber.xml b/resources/creatures/large_128/jabber.xml new file mode 100644 index 0000000..1cc7cc6 --- /dev/null +++ b/resources/creatures/large_128/jabber.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/creatures/large_128/wild.png b/resources/creatures/large_128/wild.png new file mode 100644 index 0000000..2bc4cc1 Binary files /dev/null and b/resources/creatures/large_128/wild.png differ diff --git a/resources/creatures/large_128/wild.xml b/resources/creatures/large_128/wild.xml new file mode 100644 index 0000000..224204b --- /dev/null +++ b/resources/creatures/large_128/wild.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/creatures/large_256/.gitignore b/resources/creatures/large_256/.gitignore deleted file mode 100644 index 085e8ba..0000000 --- a/resources/creatures/large_256/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Thumbs.db diff --git a/resources/creatures/large_256/crundle.png b/resources/creatures/large_256/crundle.png deleted file mode 100644 index 7c77939..0000000 Binary files a/resources/creatures/large_256/crundle.png and /dev/null differ diff --git a/resources/creatures/large_256/crundle.xml b/resources/creatures/large_256/crundle.xml deleted file mode 100644 index 7e67e0d..0000000 --- a/resources/creatures/large_256/crundle.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/creatures/large_256/domestic.png b/resources/creatures/large_256/domestic.png deleted file mode 100644 index 85c4c79..0000000 Binary files a/resources/creatures/large_256/domestic.png and /dev/null differ diff --git a/resources/creatures/large_256/domestic.xml b/resources/creatures/large_256/domestic.xml deleted file mode 100644 index 0e9fc5a..0000000 --- a/resources/creatures/large_256/domestic.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/creatures/large_256/dwarf.xml b/resources/creatures/large_256/dwarf.xml deleted file mode 100644 index 756d6fc..0000000 --- a/resources/creatures/large_256/dwarf.xml +++ /dev/null @@ -1,786 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/creatures/large_256/dwarff.png b/resources/creatures/large_256/dwarff.png deleted file mode 100644 index 7a6f54c..0000000 Binary files a/resources/creatures/large_256/dwarff.png and /dev/null differ diff --git a/resources/creatures/large_256/dwarfm.png b/resources/creatures/large_256/dwarfm.png deleted file mode 100644 index 366041d..0000000 Binary files a/resources/creatures/large_256/dwarfm.png and /dev/null differ diff --git a/resources/creatures/large_256/index.txt b/resources/creatures/large_256/index.txt deleted file mode 100644 index d57f3e6..0000000 --- a/resources/creatures/large_256/index.txt +++ /dev/null @@ -1,7 +0,0 @@ -jabber.xml -crundle.xml - -wild.xml -domestic.xml - -dwarf.xml \ No newline at end of file diff --git a/resources/creatures/large_256/jabber.png b/resources/creatures/large_256/jabber.png deleted file mode 100644 index 1a8568f..0000000 Binary files a/resources/creatures/large_256/jabber.png and /dev/null differ diff --git a/resources/creatures/large_256/jabber.xml b/resources/creatures/large_256/jabber.xml deleted file mode 100644 index 25bea0d..0000000 --- a/resources/creatures/large_256/jabber.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/creatures/large_256/wild.png b/resources/creatures/large_256/wild.png deleted file mode 100644 index 5ff0606..0000000 Binary files a/resources/creatures/large_256/wild.png and /dev/null differ diff --git a/resources/creatures/large_256/wild.xml b/resources/creatures/large_256/wild.xml deleted file mode 100644 index f50518d..0000000 --- a/resources/creatures/large_256/wild.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- cgit v1.2.1