Merge pull request #337 from trilene/master

Mitigate webrtc race condition
This commit is contained in:
DeepBlueV7.X 2020-11-25 02:40:31 +01:00 committed by GitHub
commit b9dcdbcb81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,10 +2,12 @@
#include <QQuickItem> #include <QQuickItem>
#include <algorithm> #include <algorithm>
#include <cctype> #include <cctype>
#include <chrono>
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
#include <optional> #include <optional>
#include <string_view> #include <string_view>
#include <thread>
#include <utility> #include <utility>
#include "ChatPage.h" #include "ChatPage.h"
@ -855,6 +857,9 @@ WebRTCSession::acceptOffer(const std::string &sdp)
return false; return false;
} }
// avoid a race that sometimes leaves the generated answer without media tracks (a=ssrc lines)
std::this_thread::sleep_for(std::chrono::milliseconds(200));
// set-remote-description first, then create-answer // set-remote-description first, then create-answer
GstPromise *promise = gst_promise_new_with_change_func(createAnswer, webrtc_, nullptr); GstPromise *promise = gst_promise_new_with_change_func(createAnswer, webrtc_, nullptr);
g_signal_emit_by_name(webrtc_, "set-remote-description", offer, promise); g_signal_emit_by_name(webrtc_, "set-remote-description", offer, promise);