From e2d19ea2aa8f4d10aa1d6be9b09d68b6316df85b Mon Sep 17 00:00:00 2001 From: Azur Ponjavic <azur.ponjavic@rwth-aachen.de> Date: Sat, 15 Jul 2023 09:09:27 +0200 Subject: [PATCH] moved mutex --- src/transport/webrtc_transport.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/transport/webrtc_transport.cpp b/src/transport/webrtc_transport.cpp index 39a538ad..1ca2640f 100644 --- a/src/transport/webrtc_transport.cpp +++ b/src/transport/webrtc_transport.cpp @@ -368,7 +368,9 @@ bool WebRTCTransport::send_setup_complete(RemoteStrategy remote_strategy, Encode msg[2] = std::byte((maxMessageSize & 0x0000ff00) >> 8); msg[3] = std::byte((maxMessageSize & 0x00ff0000) >> 16); msg[4] = std::byte((maxMessageSize & 0xff000000) >> 24); + std::unique_lock<std::mutex> lock(this->worker_mutex); this->send_data(msg); + lock.unlock(); return true; } @@ -400,7 +402,9 @@ bool WebRTCTransport::send_frame_config_nal(FrameId frame_id, const std::span<co } lava::log()->info(str); memcpy(&msg[2], content.data(), sizeof(uint8_t) * content.size()); + std::unique_lock<std::mutex> lock(this->worker_mutex); this->send_data(msg); + lock.unlock(); return true; } @@ -430,6 +434,7 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id, msg_frame_buffer = new rtc::binary(); msg_frame_buffer->reserve(maxMessageSize); } + std::unique_lock<std::mutex> lock(this->worker_mutex); for (u_int offset = 0; offset < content.size_bytes(); offset += (maxMessageSize - 18)) { u_int msg_size = (content.size_bytes() - offset < (maxMessageSize - 18)) ? (content.size_bytes() - offset + 18) : maxMessageSize; msg_frame_buffer->resize(msg_size); @@ -470,6 +475,7 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id, this->send_data(*msg_frame_buffer); } + lock.unlock(); return true; } @@ -631,13 +637,11 @@ void WebRTCTransport::set_state(TransportState state) { } void WebRTCTransport::send_data(const rtc::binary& rawMsg) { - std::unique_lock<std::mutex> lock(this->worker_mutex); this->send_queue.push_back(rawMsg); this->packets_send += 1; if (!this->send_active) { this->process_send_queue(); } - lock.unlock(); } void WebRTCTransport::process_send_queue() { -- GitLab