From c6981d1912e9b946a0be7856fdd403ad75eccabf Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 7 Oct 2013 17:32:55 -0700 Subject: [PATCH] have animation server set an appropriate PPS based on it's voxel edit messages --- animation-server/src/main.cpp | 39 +++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/animation-server/src/main.cpp b/animation-server/src/main.cpp index 2ffc46ee2e..125a14f6b6 100644 --- a/animation-server/src/main.cpp +++ b/animation-server/src/main.cpp @@ -594,8 +594,12 @@ void* animateVoxels(void* args) { timeval lastSendTime; + bool firstTime = true; + while (true) { gettimeofday(&lastSendTime, NULL); + + int packetsStarting = ::voxelEditPacketSender->packetsToSendCount(); // some animations //sendVoxelBlinkMessage(); @@ -619,12 +623,22 @@ void* animateVoxels(void* args) { if (::buildStreet) { doBuildStreet(); } + + ::voxelEditPacketSender->releaseQueuedMessages(); + int packetsEnding = ::voxelEditPacketSender->packetsToSendCount(); - if (::voxelEditPacketSender) { - ::voxelEditPacketSender->releaseQueuedMessages(); - if (::nonThreadedPacketSender) { - ::voxelEditPacketSender->process(); - } + if (firstTime) { + int packetsPerSecond = (packetsEnding - packetsStarting) * (ACTUAL_FPS); + + std::cout << "Setting PPS to " << packetsPerSecond << "\n"; + + ::voxelEditPacketSender->setPacketsPerSecond(packetsPerSecond); + firstTime = false; + } + + + if (::nonThreadedPacketSender) { + ::voxelEditPacketSender->process(); } uint64_t end = usecTimestampNow(); @@ -715,14 +729,13 @@ int main(int argc, const char * argv[]) // Create out VoxelEditPacketSender ::voxelEditPacketSender = new VoxelEditPacketSender; - if (::voxelEditPacketSender) { - ::voxelEditPacketSender->initialize(!::nonThreadedPacketSender); - if (::jurisdictionListener) { - ::voxelEditPacketSender->setVoxelServerJurisdictions(::jurisdictionListener->getJurisdictions()); - } - if (::nonThreadedPacketSender) { - ::voxelEditPacketSender->setProcessCallIntervalHint(ANIMATE_VOXELS_INTERVAL_USECS); - } + ::voxelEditPacketSender->initialize(!::nonThreadedPacketSender); + + if (::jurisdictionListener) { + ::voxelEditPacketSender->setVoxelServerJurisdictions(::jurisdictionListener->getJurisdictions()); + } + if (::nonThreadedPacketSender) { + ::voxelEditPacketSender->setProcessCallIntervalHint(ANIMATE_VOXELS_INTERVAL_USECS); } srand((unsigned)time(0));