From 22faea97c782d1db3a27171c137af857c00ffe0f Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Sun, 11 May 2014 17:13:57 +0200 Subject: [PATCH] Experiment success - keyword new is the saviour of the day --- src/ofxSurfaceManager.cpp | 15 +++++++++++++-- src/ofxSurfaceManager.h | 4 ---- 2 files changed, 13 insertions(+), 6 deletions(-) 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;