mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 17:35:45 +02:00
Merge pull request #1258 from ZappoMan/remove_noise
removing more noise and dont sleep if we failed to lock the node
This commit is contained in:
commit
950f486e2e
6 changed files with 24 additions and 27 deletions
|
@ -35,8 +35,6 @@ VoxelNodeData::VoxelNodeData(Node* owningNode) :
|
||||||
_lastVoxelPacketLength = 0;
|
_lastVoxelPacketLength = 0;
|
||||||
_duplicatePacketCount = 0;
|
_duplicatePacketCount = 0;
|
||||||
resetVoxelPacket();
|
resetVoxelPacket();
|
||||||
|
|
||||||
qDebug("VoxelNodeData::VoxelNodeData() this=%p owningNode=%p\n", this, owningNode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VoxelNodeData::initializeVoxelSendThread(VoxelServer* voxelServer) {
|
void VoxelNodeData::initializeVoxelSendThread(VoxelServer* voxelServer) {
|
||||||
|
@ -44,10 +42,6 @@ void VoxelNodeData::initializeVoxelSendThread(VoxelServer* voxelServer) {
|
||||||
QUuid nodeUUID = getOwningNode()->getUUID();
|
QUuid nodeUUID = getOwningNode()->getUUID();
|
||||||
_voxelSendThread = new VoxelSendThread(nodeUUID, voxelServer);
|
_voxelSendThread = new VoxelSendThread(nodeUUID, voxelServer);
|
||||||
_voxelSendThread->initialize(true);
|
_voxelSendThread->initialize(true);
|
||||||
|
|
||||||
qDebug("VoxelNodeData::initializeVoxelSendThread() this=%p owningNode=%p _voxelSendThread=%p\n",
|
|
||||||
this, getOwningNode(), _voxelSendThread);
|
|
||||||
qDebug() << "VoxelNodeData::initializeVoxelSendThread() nodeUUID=" << nodeUUID << "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VoxelNodeData::packetIsDuplicate() const {
|
bool VoxelNodeData::packetIsDuplicate() const {
|
||||||
|
|
|
@ -60,19 +60,25 @@ bool VoxelPersistThread::process() {
|
||||||
VoxelNode::getSetChildAtIndexTime(), VoxelNode::getSetChildAtIndexCalls(), usecPerSet);
|
VoxelNode::getSetChildAtIndexTime(), VoxelNode::getSetChildAtIndexCalls(), usecPerSet);
|
||||||
|
|
||||||
_initialLoadComplete = true;
|
_initialLoadComplete = true;
|
||||||
|
_lastSave = usecTimestampNow(); // we just loaded, no need to save again
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t MSECS_TO_USECS = 1000;
|
if (isStillRunning()) {
|
||||||
usleep(_persistInterval * MSECS_TO_USECS);
|
uint64_t MSECS_TO_USECS = 1000;
|
||||||
|
uint64_t USECS_TO_SLEEP = 100 * MSECS_TO_USECS; // every 100ms
|
||||||
|
usleep(USECS_TO_SLEEP);
|
||||||
// check the dirty bit and persist here...
|
|
||||||
if (_tree->isDirty()) {
|
if ((usecTimestampNow() - _lastSave) > (_persistInterval * MSECS_TO_USECS)) {
|
||||||
qDebug("saving voxels to file %s...\n",_filename);
|
qDebug("checking if voxels are dirty.\n");
|
||||||
_tree->writeToSVOFile(_filename);
|
// check the dirty bit and persist here...
|
||||||
_tree->clearDirtyBit(); // tree is clean after saving
|
if (_tree->isDirty()) {
|
||||||
qDebug("DONE saving voxels to file...\n");
|
_lastSave = usecTimestampNow();
|
||||||
}
|
qDebug("saving voxels to file %s...\n",_filename);
|
||||||
|
_tree->writeToSVOFile(_filename);
|
||||||
|
_tree->clearDirtyBit(); // tree is clean after saving
|
||||||
|
qDebug("DONE saving voxels to file...\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return isStillRunning(); // keep running till they terminate us
|
return isStillRunning(); // keep running till they terminate us
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ private:
|
||||||
|
|
||||||
time_t _loadCompleted;
|
time_t _loadCompleted;
|
||||||
uint64_t _loadTimeUSecs;
|
uint64_t _loadTimeUSecs;
|
||||||
|
uint64_t _lastSave;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __voxel_server__VoxelPersistThread__
|
#endif // __voxel_server__VoxelPersistThread__
|
||||||
|
|
|
@ -25,6 +25,7 @@ VoxelSendThread::VoxelSendThread(const QUuid& nodeUUID, VoxelServer* myServer) :
|
||||||
|
|
||||||
bool VoxelSendThread::process() {
|
bool VoxelSendThread::process() {
|
||||||
uint64_t start = usecTimestampNow();
|
uint64_t start = usecTimestampNow();
|
||||||
|
bool gotLock = false;
|
||||||
|
|
||||||
// don't do any send processing until the initial load of the voxels is complete...
|
// don't do any send processing until the initial load of the voxels is complete...
|
||||||
if (_myServer->isInitialLoadComplete()) {
|
if (_myServer->isInitialLoadComplete()) {
|
||||||
|
@ -33,6 +34,7 @@ bool VoxelSendThread::process() {
|
||||||
if (node) {
|
if (node) {
|
||||||
// make sure the node list doesn't kill our node while we're using it
|
// make sure the node list doesn't kill our node while we're using it
|
||||||
if (node->trylock()) {
|
if (node->trylock()) {
|
||||||
|
gotLock = true;
|
||||||
VoxelNodeData* nodeData = NULL;
|
VoxelNodeData* nodeData = NULL;
|
||||||
|
|
||||||
nodeData = (VoxelNodeData*) node->getLinkedData();
|
nodeData = (VoxelNodeData*) node->getLinkedData();
|
||||||
|
@ -49,9 +51,6 @@ bool VoxelSendThread::process() {
|
||||||
}
|
}
|
||||||
|
|
||||||
node->unlock(); // we're done with this node for now.
|
node->unlock(); // we're done with this node for now.
|
||||||
} else {
|
|
||||||
qDebug("VoxelSendThread::process() failed to lock node...isStillRunning()=%s\n",
|
|
||||||
debug::valueOf(isStillRunning()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -60,8 +59,8 @@ bool VoxelSendThread::process() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only sleep if we're still running...
|
// Only sleep if we're still running and we got the lock last time we tried, otherwise try to get the lock asap
|
||||||
if (isStillRunning()) {
|
if (isStillRunning() && gotLock) {
|
||||||
// dynamically sleep until we need to fire off the next set of voxels
|
// dynamically sleep until we need to fire off the next set of voxels
|
||||||
int elapsed = (usecTimestampNow() - start);
|
int elapsed = (usecTimestampNow() - start);
|
||||||
int usecToSleep = VOXEL_SEND_INTERVAL_USECS - elapsed;
|
int usecToSleep = VOXEL_SEND_INTERVAL_USECS - elapsed;
|
||||||
|
|
|
@ -47,9 +47,6 @@ const char* VOXELS_PERSIST_FILE = "/etc/highfidelity/voxel-server/resources/voxe
|
||||||
void attachVoxelNodeDataToNode(Node* newNode) {
|
void attachVoxelNodeDataToNode(Node* newNode) {
|
||||||
if (newNode->getLinkedData() == NULL) {
|
if (newNode->getLinkedData() == NULL) {
|
||||||
VoxelNodeData* voxelNodeData = new VoxelNodeData(newNode);
|
VoxelNodeData* voxelNodeData = new VoxelNodeData(newNode);
|
||||||
QUuid nodeUUID = newNode->getUUID();
|
|
||||||
qDebug("attachVoxelNodeDataToNode() newNode=%p voxelNodeData=%p\n", newNode, voxelNodeData);
|
|
||||||
qDebug() << "attachVoxelNodeDataToNode() node UUID:" << nodeUUID << "\n";
|
|
||||||
newNode->setLinkedData(voxelNodeData);
|
newNode->setLinkedData(voxelNodeData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ VoxelQuery::VoxelQuery(Node* owningNode) :
|
||||||
}
|
}
|
||||||
|
|
||||||
VoxelQuery::~VoxelQuery() {
|
VoxelQuery::~VoxelQuery() {
|
||||||
qDebug("VoxelQuery::~VoxelQuery()\n");
|
// nothing to do
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoxelQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
int VoxelQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
||||||
|
|
Loading…
Reference in a new issue