History

Fixed ui related files memory wastes

atlante45 committed 13 years ago

Commit 06119991 parent 7688dc46 files · +38 −17Browse files

Showing the changes to interface/src/VoxelSystem.cpp (1 of 6 files). Show all

Unified · Split

interface/src/VoxelSystem.cpp+22−14
@@ -51,8 +51,12 @@ GLubyte identityIndices[] = { 0,2,1, 0,3,2, // Z- · 50 unmodified lines
5151 10,11,15, 10,15,14, // Y+
5252 4,5,6, 4,6,7 }; // Z+
5353
54−VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) :
55− NodeData(NULL), _treeScale(treeScale), _maxVoxels(maxVoxels) {
54+VoxelSystem::VoxelSystem(float treeScale, int maxVoxels)
55+ : NodeData(NULL),
56+ _treeScale(treeScale),
57+ _maxVoxels(maxVoxels),
58+ _initialized(false) {
59+
5660 _voxelsInReadArrays = _voxelsInWriteArrays = _voxelsUpdated = 0;
5761 _writeRenderFullVBO = true;
5862 _readRenderFullVBO = true;
@@ -115,22 +119,25 @@ void VoxelSystem::clearFreeBufferIndexes() { · 56 unmodified lines
115119 }
116120
117121 VoxelSystem::~VoxelSystem() {
118− delete[] _readVerticesArray;
119− delete[] _writeVerticesArray;
120− delete[] _readColorsArray;
121− delete[] _writeColorsArray;
122− delete[] _writeVoxelDirtyArray;
123− delete[] _readVoxelDirtyArray;
122+ if (_initialized) {
123+ // Destroy glBuffers
124+ glDeleteBuffers(1, &_vboVerticesID);
125+ glDeleteBuffers(1, &_vboNormalsID);
126+ glDeleteBuffers(1, &_vboColorsID);
127+ glDeleteBuffers(1, &_vboIndicesID);
128+
129+ delete[] _readVerticesArray;
130+ delete[] _writeVerticesArray;
131+ delete[] _readColorsArray;
132+ delete[] _writeColorsArray;
133+ delete[] _writeVoxelDirtyArray;
134+ delete[] _readVoxelDirtyArray;
135+ }
136+
124137 delete _tree;
125138 pthread_mutex_destroy(&_bufferWriteLock);
126139 pthread_mutex_destroy(&_treeLock);
127140
128− // Destroy glBuffers
129− glDeleteBuffers(1, &_vboVerticesID);
130− glDeleteBuffers(1, &_vboNormalsID);
131− glDeleteBuffers(1, &_vboColorsID);
132− glDeleteBuffers(1, &_vboIndicesID);
133−
134141 VoxelNode::removeDeleteHook(this);
135142 }
136143
@@ -639,6 +646,7 @@ void VoxelSystem::init() { · 502 unmodified lines
639646
640647 _perlinModulateProgramInitialized = true;
641648 }
649+ _initialized = true;
642650 }
643651
644652 void VoxelSystem::updateFullVBOs() {