Fix crash bug

Doh!! Renderer used before initialized.
This commit is contained in:
matsukaze 2014-02-13 11:19:14 -05:00
parent 0a7614ce21
commit 11a399ec82

View file

@ -60,8 +60,8 @@ VoxelSystem::VoxelSystem(float treeScale, int maxVoxels)
_treeScale(treeScale), _treeScale(treeScale),
_maxVoxels(maxVoxels), _maxVoxels(maxVoxels),
_initialized(false), _initialized(false),
_inInspectForOcclusions(false),
_showCulledSharedFaces(false), _showCulledSharedFaces(false),
_inInspectForOcclusions(false),
_usePrimitiveRenderer(false), _usePrimitiveRenderer(false),
_renderer(0) { _renderer(0) {
@ -251,8 +251,6 @@ VoxelSystem::~VoxelSystem() {
cleanupVoxelMemory(); cleanupVoxelMemory();
delete _tree; delete _tree;
_renderer = 0;
} }
void VoxelSystem::setMaxVoxels(int maxVoxels) { void VoxelSystem::setMaxVoxels(int maxVoxels) {
@ -371,8 +369,10 @@ void VoxelSystem::cleanupVoxelMemory() {
_readColorsArray = NULL; _readColorsArray = NULL;
_writeColorsArray = NULL; _writeColorsArray = NULL;
} }
delete _renderer; delete _renderer;
_renderer = 0; _renderer = 0;
delete[] _writeVoxelDirtyArray; delete[] _writeVoxelDirtyArray;
delete[] _readVoxelDirtyArray; delete[] _readVoxelDirtyArray;
_writeVoxelDirtyArray = _readVoxelDirtyArray = NULL; _writeVoxelDirtyArray = _readVoxelDirtyArray = NULL;
@ -1471,7 +1471,9 @@ void VoxelSystem::killLocalVoxels() {
_tree->eraseAllOctreeElements(); _tree->eraseAllOctreeElements();
_tree->unlock(); _tree->unlock();
clearFreeBufferIndexes(); clearFreeBufferIndexes();
if (_renderer) {
_renderer->release(); _renderer->release();
}
_voxelsInReadArrays = 0; // do we need to do this? _voxelsInReadArrays = 0; // do we need to do this?
setupNewVoxelsForDrawing(); setupNewVoxelsForDrawing();
} }
@ -1675,13 +1677,17 @@ void VoxelSystem::cullSharedFaces() {
if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) { if (Menu::getInstance()->isOptionChecked(MenuOption::CullSharedFaces)) {
_useVoxelShader = false; _useVoxelShader = false;
_usePrimitiveRenderer = true; _usePrimitiveRenderer = true;
if (_renderer) {
_renderer->release(); _renderer->release();
}
clearAllNodesBufferIndex(); clearAllNodesBufferIndex();
inspectForOcclusions(); inspectForOcclusions();
qDebug("culling shared faces in %d nodes", _nodeCount); qDebug("culling shared faces in %d nodes", _nodeCount);
} else { } else {
_usePrimitiveRenderer = false; _usePrimitiveRenderer = false;
if (_renderer) {
_renderer->release(); _renderer->release();
}
clearAllNodesBufferIndex(); clearAllNodesBufferIndex();
_tree->lockForRead(); _tree->lockForRead();
_tree->recurseTreeWithOperation(clearOcclusionsOperation); _tree->recurseTreeWithOperation(clearOcclusionsOperation);