History

added octree scene stats locking and unlocking

wangyix committed 12 years ago

Commit 3bc457d1 parent 52860904 files · +48 −34Browse files

Showing the changes to interface/src/Application.cpp (1 of 4 files). Show all

Unified · Split

interface/src/Application.cpp+43−24
@@ -2107,6 +2107,21 @@ void Application::updateMyAvatar(float deltaTime) { · 2106 unmodified lines
2107}2107}
2108}2108}
2109 2109
2110/*/ Attempt to identify the sender from it's address.
2111 if (sendingNode) {
2112 QUuid nodeUUID = sendingNode->getUUID();
2113
2114 // now that we know the node ID, let's add these stats to the stats for that node...
2115 _octreeSceneStatsLock.lockForWrite();
2116 if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) {
2117 OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID];
2118 stats.trackIncomingOctreePacket(packet, wasStatsPacket, sendingNode->getClockSkewUsec());
2119 }
2120 _octreeSceneStatsLock.unlock();
2121 }
2122 */
2123
2124
2110 2125
2111void Application::sendNack() {2126void Application::sendNack() {
2112 2127
@@ -2122,13 +2137,6 @@ void Application::sendNack() { · 9 unmodified lines
2122 || node->getType() == NodeType::ModelServer)2137 || node->getType() == NodeType::ModelServer)
2123 ) {2138 ) {
2124 2139
2125 //_octreeSceneStatsLock.lockForWrite();
2126
2127 OctreeSceneStats& stats = _octreeServerSceneStats[node->getUUID()];
2128 int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack();
2129 if (numSequenceNumbersAvailable == 0)
2130 continue;
2131
2132 char* dataAt = packet;2140 char* dataAt = packet;
2133 int bytesRemaining = MAX_PACKET_SIZE;2141 int bytesRemaining = MAX_PACKET_SIZE;
2134 2142
@@ -2136,28 +2144,39 @@ void Application::sendNack() { · 1 unmodified line
2136 int numBytesPacketHeader = populatePacketHeader(packet, PacketTypeOctreeDataNack);2144 int numBytesPacketHeader = populatePacketHeader(packet, PacketTypeOctreeDataNack);
2137 dataAt += numBytesPacketHeader;2145 dataAt += numBytesPacketHeader;
2138 bytesRemaining -= numBytesPacketHeader;2146 bytesRemaining -= numBytesPacketHeader;
2147 int numSequenceNumbersRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
2139 2148
2140 int numPacketsRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
2141 2149
2150 QUuid nodeUUID = node->getUUID();
2142 2151
2143 // calculate and pack number of sequence numbers2152 _octreeSceneStatsLock.lockForWrite();
2144 uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numPacketsRoomFor);2153 if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) {
2145 uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt;2154 OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID];
2146 *numSequenceNumbersAt = numSequenceNumbers;2155
2147 dataAt += sizeof(uint16_t);2156 int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack();
2157 if (numSequenceNumbersAvailable == 0) {
2158 _octreeSceneStatsLock.unlock();
2159 continue;
2160 }
2148 2161
2149 // pack sequence numbers2162 // calculate and pack number of sequence numbers
2150//printf("\n\t sending nack...\n");2163 uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numSequenceNumbersRoomFor);
2151//printf("\t\t packed %d seq #s:", numSequenceNumbers);2164 uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt;
2152 for (int i = 0; i < numSequenceNumbers; i++) {2165 *numSequenceNumbersAt = numSequenceNumbers;
2153 OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt;2166 dataAt += sizeof(uint16_t);
2154 *sequenceNumberAt = stats.getNextSequenceNumberToNack();2167
2155 dataAt += sizeof(OCTREE_PACKET_SEQUENCE);2168 // pack sequence numbers
2156//printf(" %d,", *sequenceNumberAt);2169 //printf("\n\t sending nack...\n");
2170 //printf("\t\t packed %d seq #s:", numSequenceNumbers);
2171 for (int i = 0; i < numSequenceNumbers; i++) {
2172 OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt;
2173 *sequenceNumberAt = stats.getNextSequenceNumberToNack();
2174 dataAt += sizeof(OCTREE_PACKET_SEQUENCE);
2175 //printf(" %d,", *sequenceNumberAt);
2176 }
2177 //printf("\n");
2157 }2178 }
2158//printf("\n");2179 _octreeSceneStatsLock.unlock();
2159
2160 //_octreeSceneStatsLock.unlock();
2161 2180
2162 // make sure we still have an active socket????2181 // make sure we still have an active socket????
2163 nodeList->writeUnverifiedDatagram(packet, dataAt-packet, node);2182 nodeList->writeUnverifiedDatagram(packet, dataAt-packet, node);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t