one more SPSCQueue

This commit is contained in:
Nikhil Narayana 2023-10-29 23:09:27 -07:00
commit b238ccd35b
No known key found for this signature in database
GPG key ID: 2D6E647B8732451F
2 changed files with 8 additions and 9 deletions

View file

@ -399,19 +399,19 @@ unsigned int SlippiNetplayClient::OnData(sf::Packet& packet, ENetPeer* peer)
last_frame_acked[p_idx] = frame > last_frame_acked[p_idx] ? frame : last_frame_acked[p_idx]; last_frame_acked[p_idx] = frame > last_frame_acked[p_idx] ? frame : last_frame_acked[p_idx];
// Remove old timings // Remove old timings
while (!ack_timers[p_idx].empty() && ack_timers[p_idx].front().frame < frame) while (!ack_timers[p_idx].Empty() && ack_timers[p_idx].Front().frame < frame)
{ {
ack_timers[p_idx].pop(); ack_timers[p_idx].Pop();
} }
// Don't get a ping if we do not have the right ack frame // Don't get a ping if we do not have the right ack frame
if (ack_timers[p_idx].empty() || ack_timers[p_idx].front().frame != frame) if (ack_timers[p_idx].Empty() || ack_timers[p_idx].Front().frame != frame)
{ {
break; break;
} }
auto send_time = ack_timers[p_idx].front().time_us; auto send_time = ack_timers[p_idx].Front().time_us;
ack_timers[p_idx].pop(); ack_timers[p_idx].Pop();
ping_us[p_idx] = Common::Timer::NowUs() - send_time; ping_us[p_idx] = Common::Timer::NowUs() - send_time;
if (g_ActiveConfig.bShowNetPlayPing && frame % SLIPPI_PING_DISPLAY_INTERVAL == 0 && p_idx == 0) if (g_ActiveConfig.bShowNetPlayPing && frame % SLIPPI_PING_DISPLAY_INTERVAL == 0 && p_idx == 0)
@ -1072,8 +1072,7 @@ void SlippiNetplayClient::StartSlippiGame()
last_frame_acked[i] = 0; last_frame_acked[i] = 0;
// Reset ack timers // Reset ack timers
std::queue<SlippiNetplayClient::FrameTiming> empty; ack_timers[i].Clear();
std::swap(ack_timers[i], empty);
} }
is_desync_recovery = false; is_desync_recovery = false;
@ -1161,7 +1160,7 @@ void SlippiNetplayClient::SendSlippiPad(std::unique_ptr<SlippiPad> pad)
FrameTiming send_time; FrameTiming send_time;
send_time.frame = frame; send_time.frame = frame;
send_time.time_us = time; send_time.time_us = time;
ack_timers[i].emplace(send_time); ack_timers[i].Push(send_time);
} }
} }

View file

@ -258,7 +258,7 @@ protected:
int32_t last_frame_acked[SLIPPI_REMOTE_PLAYER_MAX]; int32_t last_frame_acked[SLIPPI_REMOTE_PLAYER_MAX];
FrameOffsetData frame_offset_data[SLIPPI_REMOTE_PLAYER_MAX]; FrameOffsetData frame_offset_data[SLIPPI_REMOTE_PLAYER_MAX];
FrameTiming last_frame_timing[SLIPPI_REMOTE_PLAYER_MAX]; FrameTiming last_frame_timing[SLIPPI_REMOTE_PLAYER_MAX];
std::array<std::queue<FrameTiming>, SLIPPI_REMOTE_PLAYER_MAX> ack_timers; std::array<Common::SPSCQueue<FrameTiming, false>, SLIPPI_REMOTE_PLAYER_MAX> ack_timers;
SlippiConnectStatus slippi_connect_status = SlippiConnectStatus::NET_CONNECT_STATUS_UNSET; SlippiConnectStatus slippi_connect_status = SlippiConnectStatus::NET_CONNECT_STATUS_UNSET;
std::vector<int> failed_connections; std::vector<int> failed_connections;