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
60 _treeScale(treeScale),60 _treeScale(treeScale),
61 _maxVoxels(maxVoxels),61 _maxVoxels(maxVoxels),
62 _initialized(false),62 _initialized(false),
63 _inInspectForOcclusions(false),
64 _showCulledSharedFaces(false),63 _showCulledSharedFaces(false),
64 _inInspectForOcclusions(false),
65 _usePrimitiveRenderer(false),65 _usePrimitiveRenderer(false),
66 _renderer(0) {66 _renderer(0) {
67 67
@@ -251,8 +251,6 @@ VoxelSystem::~VoxelSystem() { · 183 unmodified lines
251 251
252 cleanupVoxelMemory();252 cleanupVoxelMemory();
253 delete _tree;253 delete _tree;
254
255 _renderer = 0;
256}254}
257 255
258void VoxelSystem::setMaxVoxels(int maxVoxels) {256void VoxelSystem::setMaxVoxels(int maxVoxels) {
@@ -371,8 +369,10 @@ void VoxelSystem::cleanupVoxelMemory() { · 112 unmodified lines
371 _readColorsArray = NULL;369 _readColorsArray = NULL;
372 _writeColorsArray = NULL;370 _writeColorsArray = NULL;
373 }371 }
372
374 delete _renderer;373 delete _renderer;
375 _renderer = 0;374 _renderer = 0;
375
376 delete[] _writeVoxelDirtyArray;376 delete[] _writeVoxelDirtyArray;
377 delete[] _readVoxelDirtyArray;377 delete[] _readVoxelDirtyArray;
378 _writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;378 _writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;
@@ -1471,7 +1471,9 @@ void VoxelSystem::killLocalVoxels() { · 1092 unmodified lines
1471 _tree->eraseAllOctreeElements();1471 _tree->eraseAllOctreeElements();
1472 _tree->unlock();1472 _tree->unlock();
1473 clearFreeBufferIndexes();1473 clearFreeBufferIndexes();
1474 _renderer->release();1474 if (_renderer) {
1475 _renderer->release();
1476 }
1475 _voxelsInReadArrays = 0; // do we need to do this?1477 _voxelsInReadArrays = 0; // do we need to do this?
1476 setupNewVoxelsForDrawing();1478 setupNewVoxelsForDrawing();
1477}1479}
@@ -1675,13 +1677,17 @@ void VoxelSystem::cullSharedFaces() { · 197 unmodified lines
1675 if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {1677 if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {
1676 _useVoxelShader = false;1678 _useVoxelShader = false;
1677 _usePrimitiveRenderer = true;1679 _usePrimitiveRenderer = true;
1678 _renderer->release();1680 if (_renderer) {
1681 _renderer->release();
1682 }
1679 clearAllNodesBufferIndex();1683 clearAllNodesBufferIndex();
1680 inspectForOcclusions();1684 inspectForOcclusions();
1681 qDebug("culling shared faces in %d nodes", _nodeCount);1685 qDebug("culling shared faces in %d nodes", _nodeCount);
1682 } else {1686 } else {
1683 _usePrimitiveRenderer = false;1687 _usePrimitiveRenderer = false;
1684 _renderer->release();1688 if (_renderer) {
1689 _renderer->release();
1690 }
1685 clearAllNodesBufferIndex();1691 clearAllNodesBufferIndex();
1686 _tree->lockForRead();1692 _tree->lockForRead();
1687 _tree->recurseTreeWithOperation(clearOcclusionsOperation);1693 _tree->recurseTreeWithOperation(clearOcclusionsOperation);