MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / nthread_start

Function nthread_start

Source/nthread.cpp:148–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

146}
147
148void nthread_start(bool setTurnUpperBit)
149{
150 last_tick = SDL_GetTicks();
151 sgbPacketCountdown = 1;
152 sgbSyncCountdown = 1;
153 sgbTicsOutOfSync = true;
154 if (setTurnUpperBit)
155 nthread_set_turn_upper_bit();
156 else
157 turn_upper_bit = 0;
158 _SNETCAPS caps;
159 caps.size = 36;
160 SNetGetProviderCaps(&caps);
161 gdwTurnsInTransit = caps.defaultturnsintransit;
162 if (gdwTurnsInTransit == 0)
163 gdwTurnsInTransit = 1;
164 if (caps.defaultturnssec <= 20 && caps.defaultturnssec != 0)
165 sgbNetUpdateRate = 20 / caps.defaultturnssec;
166 else
167 sgbNetUpdateRate = 1;
168 uint32_t largestMsgSize = 512;
169 if (caps.maxmessagesize < 0x200)
170 largestMsgSize = caps.maxmessagesize;
171 gdwLargestMsgSize = largestMsgSize;
172 gdwNormalMsgSize = caps.bytessec * sgbNetUpdateRate / 20;
173 gdwNormalMsgSize *= 3;
174 gdwNormalMsgSize >>= 2;
175 if (caps.maxplayers > MAX_PLRS)
176 caps.maxplayers = MAX_PLRS;
177 gdwNormalMsgSize /= caps.maxplayers;
178 while (gdwNormalMsgSize < 0x80) {
179 gdwNormalMsgSize *= 2;
180 sgbNetUpdateRate *= 2;
181 }
182 if (gdwNormalMsgSize > largestMsgSize)
183 gdwNormalMsgSize = largestMsgSize;
184 if (gbIsMultiplayer) {
185 sgbThreadIsRunning = false;
186 MemCrit.lock();
187 nthread_should_run = true;
188 Thread = SdlThread { NthreadHandler };
189 }
190}
191
192void nthread_cleanup()
193{

Callers 1

NetInitFunction · 0.85

Calls 3

SNetGetProviderCapsFunction · 0.85
lockMethod · 0.80

Tested by

no test coverage detected