History

Fix crash bug

Doh!! Renderer used before initialized.

matsukaze committed 12 years ago

Commit 11a399e1 parent 0a7614c1 file · +12 −6Browse files

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

Unified · Split

interface/src/VoxelSystem.cpp+12−6
@@ -60,8 +60,8 @@ VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) · 59 unmodified lines
6060 _treeScale(treeScale),
6161 _maxVoxels(maxVoxels),
6262 _initialized(false),
63− _inInspectForOcclusions(false),
6463 _showCulledSharedFaces(false),
64+ _inInspectForOcclusions(false),
6565 _usePrimitiveRenderer(false),
6666 _renderer(0) {
6767
@@ -251,8 +251,6 @@ VoxelSystem::~VoxelSystem() { · 183 unmodified lines
251251
252252 cleanupVoxelMemory();
253253 delete _tree;
254−
255− _renderer = 0;
256254 }
257255
258256 void VoxelSystem::setMaxVoxels(int maxVoxels) {
@@ -371,8 +369,10 @@ void VoxelSystem::cleanupVoxelMemory() { · 112 unmodified lines
371369 _readColorsArray = NULL;
372370 _writeColorsArray = NULL;
373371 }
372+
374373 delete _renderer;
375374 _renderer = 0;
375+
376376 delete[] _writeVoxelDirtyArray;
377377 delete[] _readVoxelDirtyArray;
378378 _writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;
@@ -1471,7 +1471,9 @@ void VoxelSystem::killLocalVoxels() { · 1092 unmodified lines
14711471 _tree->eraseAllOctreeElements();
14721472 _tree->unlock();
14731473 clearFreeBufferIndexes();
1474− _renderer->release();
1474+ if (_renderer) {
1475+ _renderer->release();
1476+ }
14751477 _voxelsInReadArrays = 0; // do we need to do this?
14761478 setupNewVoxelsForDrawing();
14771479 }
@@ -1675,13 +1677,17 @@ void VoxelSystem::cullSharedFaces() { · 197 unmodified lines
16751677 if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {
16761678 _useVoxelShader = false;
16771679 _usePrimitiveRenderer = true;
1678− _renderer->release();
1680+ if (_renderer) {
1681+ _renderer->release();
1682+ }
16791683 clearAllNodesBufferIndex();
16801684 inspectForOcclusions();
16811685 qDebug("culling shared faces in %d nodes", _nodeCount);
16821686 } else {
16831687 _usePrimitiveRenderer = false;
1684− _renderer->release();
1688+ if (_renderer) {
1689+ _renderer->release();
1690+ }
16851691 clearAllNodesBufferIndex();
16861692 _tree->lockForRead();
16871693 _tree->recurseTreeWithOperation(clearOcclusionsOperation);