diff --git a/src/ofxSurfaceManager.cpp b/src/ofxSurfaceManager.cpp index c11da30..d89d324 100644 --- a/src/ofxSurfaceManager.cpp +++ b/src/ofxSurfaceManager.cpp @@ -7,7 +7,16 @@ ofxSurfaceManager::ofxSurfaceManager() ofxSurfaceManager::~ofxSurfaceManager() { + // delete all extra allocations from the heap + while ( triangleSurfaces.size() ) { + delete triangleSurfaces.back(); + triangleSurfaces.pop_back(); + } + while ( surfaceGuis.size() ) { + delete surfaceGuis.back(); + surfaceGuis.pop_back(); + } } void ofxSurfaceManager::setup() @@ -96,7 +105,9 @@ void ofxSurfaceManager::removeSurface(int index) return; } + delete surfaceGuis[index]; surfaceGuis.erase( surfaceGuis.begin()+index ); + delete triangleSurfaces[index]; triangleSurfaces.erase( triangleSurfaces.begin()+index ); } @@ -130,8 +141,8 @@ int ofxSurfaceManager::size() void ofxSurfaceManager::addTriangleSurface() { - triangleSurfaces.push_back( &aTriangleSurfaces[triangleSurfaces.size()] ); - surfaceGuis.push_back( &aSurfaceGuis[surfaceGuis.size()] ); + triangleSurfaces.push_back( new ofxTriangleSurface() ); + surfaceGuis.push_back( new ofxSurfaceGui() ); surfaceGuis.back()->setup( *triangleSurfaces.back() ); } diff --git a/src/ofxSurfaceManager.h b/src/ofxSurfaceManager.h index b11add9..5387dcb 100644 --- a/src/ofxSurfaceManager.h +++ b/src/ofxSurfaceManager.h @@ -5,8 +5,6 @@ #include "ofxTriangleSurface.h" #include "ofxSurfaceGui.h" -#define MAX_SURFACE_COUNT 25 - class ofxSurfaceManager { public: @@ -30,8 +28,6 @@ public: // TODO: add simple surface private: - ofxTriangleSurface aTriangleSurfaces[MAX_SURFACE_COUNT]; - ofxSurfaceGui aSurfaceGuis[MAX_SURFACE_COUNT]; deque triangleSurfaces; deque surfaceGuis;