Avoid unlock and immediate relock of mutex

This commit is contained in:
Cameron Gutman 2021-05-25 19:57:06 -05:00
parent 1376c62e5f
commit d9ea208dea

View File

@ -520,7 +520,7 @@ static bool sendMessageEnet(short ptype, short paylen, const void* payload) {
return false; return false;
} }
PltUnlockMutex(&enetMutex); // enetMutex still locked here
} }
else { else {
PNVCTL_ENET_PACKET_HEADER_V1 packet; PNVCTL_ENET_PACKET_HEADER_V1 packet;
@ -532,12 +532,18 @@ static bool sendMessageEnet(short ptype, short paylen, const void* payload) {
packet = (PNVCTL_ENET_PACKET_HEADER_V1)enetPacket->data; packet = (PNVCTL_ENET_PACKET_HEADER_V1)enetPacket->data;
packet->type = LE16(ptype); packet->type = LE16(ptype);
memcpy(&packet[1], payload, paylen); memcpy(&packet[1], payload, paylen);
PltLockMutex(&enetMutex);
} }
PltLockMutex(&enetMutex); // Queue the packet to be sent
err = enet_peer_send(peer, 0, enetPacket); err = enet_peer_send(peer, 0, enetPacket);
// Actually send it
enet_host_service(client, NULL, 0); enet_host_service(client, NULL, 0);
PltUnlockMutex(&enetMutex); PltUnlockMutex(&enetMutex);
if (err < 0) { if (err < 0) {
Limelog("Failed to send ENet control packet\n"); Limelog("Failed to send ENet control packet\n");
enet_packet_destroy(enetPacket); enet_packet_destroy(enetPacket);