mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 16:36:54 +02:00
Update SendQueue::queuePacketList to use splice
This commit is contained in:
parent
df51069305
commit
fc29297d87
1 changed files with 11 additions and 9 deletions
|
@ -68,20 +68,19 @@ void SendQueue::queuePacketList(std::unique_ptr<PacketList> packetList) {
|
||||||
Q_ASSERT(packetList->_packets.size() > 0);
|
Q_ASSERT(packetList->_packets.size() > 0);
|
||||||
|
|
||||||
{
|
{
|
||||||
QWriteLocker locker(&_packetsLock);
|
|
||||||
|
|
||||||
auto messageNumber = getNextMessageNumber();
|
auto messageNumber = getNextMessageNumber();
|
||||||
|
|
||||||
if (packetList->_packets.size() == 1) {
|
if (packetList->_packets.size() == 1) {
|
||||||
auto packet = packetList->takeFront<Packet>();
|
auto packet = packetList->_packets.front().get();
|
||||||
packet->setPacketPosition(Packet::PacketPosition::ONLY);
|
|
||||||
|
|
||||||
|
packet->setPacketPosition(Packet::PacketPosition::ONLY);
|
||||||
packet->writeMessageNumber(messageNumber);
|
packet->writeMessageNumber(messageNumber);
|
||||||
_packets.push_back(std::move(packet));
|
|
||||||
} else {
|
} else {
|
||||||
bool haveMarkedFirstPacket = false;
|
bool haveMarkedFirstPacket = false;
|
||||||
while (!packetList->_packets.empty()) {
|
auto end = packetList->_packets.end();
|
||||||
auto packet = packetList->takeFront<Packet>();
|
for (auto it = packetList->_packets.begin(); it != end; ++it) {
|
||||||
|
auto packet = it->get();
|
||||||
|
|
||||||
if (!haveMarkedFirstPacket) {
|
if (!haveMarkedFirstPacket) {
|
||||||
packet->setPacketPosition(Packet::PacketPosition::FIRST);
|
packet->setPacketPosition(Packet::PacketPosition::FIRST);
|
||||||
haveMarkedFirstPacket = true;
|
haveMarkedFirstPacket = true;
|
||||||
|
@ -92,11 +91,14 @@ void SendQueue::queuePacketList(std::unique_ptr<PacketList> packetList) {
|
||||||
}
|
}
|
||||||
|
|
||||||
packet->writeMessageNumber(messageNumber);
|
packet->writeMessageNumber(messageNumber);
|
||||||
|
|
||||||
_packets.push_back(std::move(packet));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWriteLocker locker(&_packetsLock);
|
||||||
|
|
||||||
|
_packets.splice(_packets.end(), packetList->_packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this->thread()->isRunning()) {
|
if (!this->thread()->isRunning()) {
|
||||||
this->thread()->start();
|
this->thread()->start();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue