Merge pull request #3672 from ey6es/metavoxels

Fix for metavoxel stream crash/crash on exit.
This commit is contained in:
Andrzej Kapolka 2014-10-27 15:11:53 -07:00
commit 9e086a8d08
4 changed files with 16 additions and 2 deletions

View file

@ -48,6 +48,13 @@ MetavoxelSystem::NetworkSimulation::NetworkSimulation(float dropRate, float repe
bandwidthLimit(bandwidthLimit) {
}
MetavoxelSystem::~MetavoxelSystem() {
// kill the updater before we delete our network simulation objects
_updater->thread()->quit();
_updater->thread()->wait();
_updater = NULL;
}
void MetavoxelSystem::init() {
MetavoxelClientManager::init();
DefaultMetavoxelRendererImplementation::init();

View file

@ -43,6 +43,8 @@ public:
int maximumDelay = 0, int bandwidthLimit = 0);
};
virtual ~MetavoxelSystem();
virtual void init();
virtual MetavoxelLOD getLOD();

View file

@ -27,8 +27,10 @@ MetavoxelClientManager::MetavoxelClientManager() :
}
MetavoxelClientManager::~MetavoxelClientManager() {
_updater->thread()->quit();
_updater->thread()->wait();
if (_updater) {
_updater->thread()->quit();
_updater->thread()->wait();
}
}
void MetavoxelClientManager::init() {

View file

@ -1040,6 +1040,9 @@ MetavoxelNode* MetavoxelNode::readSubdivision(MetavoxelStreamState& state) {
}
void MetavoxelNode::writeSubdivision(MetavoxelStreamState& state) const {
if (!state.shouldSubdivide()) {
return;
}
bool leaf = isLeaf();
if (!state.shouldSubdivideReference()) {
state.base.stream << leaf;