diff options
author | Bluddy | 2011-04-28 17:06:03 +0300 |
---|---|---|
committer | Bluddy | 2011-04-28 18:02:07 +0300 |
commit | 781e178df3c71441adf96c15c92edad6eab2b59d (patch) | |
tree | cb8831f2a8b7c099ce9aa0dbf4d9a9addea06ff2 /engines/toon | |
parent | 78a0db127ab5ccbe53adf86dde1f040364ad3282 (diff) | |
download | scummvm-rg350-781e178df3c71441adf96c15c92edad6eab2b59d.tar.gz scummvm-rg350-781e178df3c71441adf96c15c92edad6eab2b59d.tar.bz2 scummvm-rg350-781e178df3c71441adf96c15c92edad6eab2b59d.zip |
TOON: Reduced fragmentation by using a fixed value for pathfinding allocation
Toon makes some rather big allocations for pathfinding, alternating between 3MB and 6MB). In small devices, this creates really bad fragmentation which can cause crashes. I set the size at a fixed 6MB.
Diffstat (limited to 'engines/toon')
-rw-r--r-- | engines/toon/path.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/toon/path.cpp b/engines/toon/path.cpp index 677876fd8e..26355863f6 100644 --- a/engines/toon/path.cpp +++ b/engines/toon/path.cpp @@ -409,7 +409,11 @@ void PathFinding::init(Picture *mask) { _height = mask->getHeight(); _currentMask = mask; _heap->unload(); - _heap->init(_width * _height); + // In order to reduce memory fragmentation on small devices, we use the maximum + // possible size here which is TOON_BACKBUFFER_WIDTH. Even though this is + // 1280 as opposed to the possible 640, it actually helps memory allocation on + // those devices. + _heap->init(TOON_BACKBUFFER_WIDTH * _height); // should really be _width delete[] _gridTemp; _gridTemp = new int32[_width*_height]; } |