From 06119990e8d4ea569c617facf45e4f245a36edae Mon Sep 17 00:00:00 2001 From: atlante45 Date: Tue, 3 Sep 2013 14:47:50 -0700 Subject: [PATCH] Fixed ui related files memory wastes --- interface/src/VoxelSystem.cpp | 36 ++++++++++++++++----------- interface/src/renderer/TextureCache.h | 4 +-- interface/src/ui/BandwidthDialog.cpp | 6 +++++ interface/src/ui/BandwidthDialog.h | 2 +- interface/src/ui/VoxelStatsDialog.cpp | 6 +++++ interface/src/ui/VoxelStatsDialog.h | 1 + 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/interface/src/VoxelSystem.cpp b/interface/src/VoxelSystem.cpp index c8df22b270..5229873164 100644 --- a/interface/src/VoxelSystem.cpp +++ b/interface/src/VoxelSystem.cpp @@ -51,8 +51,12 @@ GLubyte identityIndices[] = { 0,2,1, 0,3,2, // Z- 10,11,15, 10,15,14, // Y+ 4,5,6, 4,6,7 }; // Z+ -VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) : - NodeData(NULL), _treeScale(treeScale), _maxVoxels(maxVoxels) { +VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) + : NodeData(NULL), + _treeScale(treeScale), + _maxVoxels(maxVoxels), + _initialized(false) { + _voxelsInReadArrays = _voxelsInWriteArrays = _voxelsUpdated = 0; _writeRenderFullVBO = true; _readRenderFullVBO = true; @@ -115,22 +119,25 @@ void VoxelSystem::clearFreeBufferIndexes() { } VoxelSystem::~VoxelSystem() { - delete[] _readVerticesArray; - delete[] _writeVerticesArray; - delete[] _readColorsArray; - delete[] _writeColorsArray; - delete[] _writeVoxelDirtyArray; - delete[] _readVoxelDirtyArray; + if (_initialized) { + // Destroy glBuffers + glDeleteBuffers(1, &_vboVerticesID); + glDeleteBuffers(1, &_vboNormalsID); + glDeleteBuffers(1, &_vboColorsID); + glDeleteBuffers(1, &_vboIndicesID); + + delete[] _readVerticesArray; + delete[] _writeVerticesArray; + delete[] _readColorsArray; + delete[] _writeColorsArray; + delete[] _writeVoxelDirtyArray; + delete[] _readVoxelDirtyArray; + } + delete _tree; pthread_mutex_destroy(&_bufferWriteLock); pthread_mutex_destroy(&_treeLock); - // Destroy glBuffers - glDeleteBuffers(1, &_vboVerticesID); - glDeleteBuffers(1, &_vboNormalsID); - glDeleteBuffers(1, &_vboColorsID); - glDeleteBuffers(1, &_vboIndicesID); - VoxelNode::removeDeleteHook(this); } @@ -639,6 +646,7 @@ void VoxelSystem::init() { _perlinModulateProgramInitialized = true; } + _initialized = true; } void VoxelSystem::updateFullVBOs() { diff --git a/interface/src/renderer/TextureCache.h b/interface/src/renderer/TextureCache.h index 9be048f398..50c495bfa3 100644 --- a/interface/src/renderer/TextureCache.h +++ b/interface/src/renderer/TextureCache.h @@ -49,9 +49,9 @@ private: QOpenGLFramebufferObject* createFramebufferObject(); GLuint _permutationNormalTextureID; - - QOpenGLFramebufferObject* _primaryFramebufferObject; + GLuint _primaryDepthTextureID; + QOpenGLFramebufferObject* _primaryFramebufferObject; QOpenGLFramebufferObject* _secondaryFramebufferObject; QOpenGLFramebufferObject* _tertiaryFramebufferObject; }; diff --git a/interface/src/ui/BandwidthDialog.cpp b/interface/src/ui/BandwidthDialog.cpp index 4ff9a9878e..5f7a73cc44 100644 --- a/interface/src/ui/BandwidthDialog.cpp +++ b/interface/src/ui/BandwidthDialog.cpp @@ -38,6 +38,12 @@ BandwidthDialog::BandwidthDialog(QWidget* parent, BandwidthMeter* model) : } } +BandwidthDialog::~BandwidthDialog() { + for (int i = 0; i < BandwidthMeter::N_STREAMS; ++i) { + delete _labels[i]; + } +} + void BandwidthDialog::paintEvent(QPaintEvent* event) { // Update labels diff --git a/interface/src/ui/BandwidthDialog.h b/interface/src/ui/BandwidthDialog.h index 636e91dce9..a702b1be23 100644 --- a/interface/src/ui/BandwidthDialog.h +++ b/interface/src/ui/BandwidthDialog.h @@ -18,9 +18,9 @@ class BandwidthDialog : public QDialog { Q_OBJECT public: - // Sets up the UI based on the configuration of the BandwidthMeter BandwidthDialog(QWidget* parent, BandwidthMeter* model); + ~BandwidthDialog(); signals: diff --git a/interface/src/ui/VoxelStatsDialog.cpp b/interface/src/ui/VoxelStatsDialog.cpp index 52b32ef7a5..5892c2c70e 100644 --- a/interface/src/ui/VoxelStatsDialog.cpp +++ b/interface/src/ui/VoxelStatsDialog.cpp @@ -53,6 +53,12 @@ VoxelStatsDialog::VoxelStatsDialog(QWidget* parent, VoxelSceneStats* model) : } } +VoxelStatsDialog::~VoxelStatsDialog() { + for (int i = 0; i <(int)VoxelSceneStats::ITEM_COUNT; ++i) { + delete _labels[i]; + } +} + void VoxelStatsDialog::paintEvent(QPaintEvent* event) { // Update labels diff --git a/interface/src/ui/VoxelStatsDialog.h b/interface/src/ui/VoxelStatsDialog.h index eab5b6a45a..474f65a1e3 100644 --- a/interface/src/ui/VoxelStatsDialog.h +++ b/interface/src/ui/VoxelStatsDialog.h @@ -19,6 +19,7 @@ class VoxelStatsDialog : public QDialog { public: // Sets up the UI VoxelStatsDialog(QWidget* parent, VoxelSceneStats* model); + ~VoxelStatsDialog(); signals: void closed();