Avoid unlock and immediate relock of mutex
This commit is contained in:
parent
1376c62e5f
commit
d9ea208dea
1 changed files with 8 additions and 2 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue