mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[feat] put ice agent into ice worker thread and use message queue to handle events
This commit is contained in:
@@ -438,13 +438,28 @@ int Render::Run() {
|
||||
// Main loop
|
||||
while (!exit_) {
|
||||
if (SignalStatus::SignalConnected == signal_status_ &&
|
||||
!is_create_connection_ && password_inited_) {
|
||||
!is_create_connection_ && password_inited_ &&
|
||||
"Failed" != connection_status_str_) {
|
||||
LOG_INFO("Connected with signal server, create p2p connection");
|
||||
is_create_connection_ =
|
||||
CreateConnection(peer_, client_id_, password_saved_.c_str()) ? false
|
||||
: true;
|
||||
}
|
||||
|
||||
if (!is_create_connection_ && rejoin_ &&
|
||||
"Failed" == connection_status_str_) {
|
||||
LeaveConnection(peer_, client_id_);
|
||||
DestroyPeer(&peer_);
|
||||
peer_ = CreatePeer(¶ms_);
|
||||
if (peer_) {
|
||||
LOG_INFO("[{}] Create peer instance successful", client_id_);
|
||||
Init(peer_, client_id_);
|
||||
LOG_INFO("[{}] Peer init finish", client_id_);
|
||||
} else {
|
||||
LOG_INFO("Create peer instance failed");
|
||||
}
|
||||
}
|
||||
|
||||
if (!inited_ ||
|
||||
localization_language_index_last_ != localization_language_index_) {
|
||||
connect_button_label_ =
|
||||
@@ -541,8 +556,8 @@ int Render::Run() {
|
||||
LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_,
|
||||
remote_id_.c_str());
|
||||
if (peer_reserved_) {
|
||||
DestroyPeer(&peer_reserved_);
|
||||
LOG_INFO("Destroy peer[reserved]");
|
||||
DestroyPeer(&peer_reserved_);
|
||||
}
|
||||
|
||||
rejoin_ = false;
|
||||
@@ -667,17 +682,16 @@ int Render::Run() {
|
||||
device_controller_factory_ = nullptr;
|
||||
}
|
||||
|
||||
if (is_create_connection_) {
|
||||
if (peer_) {
|
||||
LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_);
|
||||
LeaveConnection(peer_, client_id_);
|
||||
is_client_mode_ = false;
|
||||
}
|
||||
|
||||
if (peer_) {
|
||||
LOG_INFO("Destroy peer");
|
||||
DestroyPeer(&peer_);
|
||||
}
|
||||
|
||||
if (peer_reserved_) {
|
||||
LOG_INFO("Destroy peer[reserved]");
|
||||
DestroyPeer(&peer_reserved_);
|
||||
}
|
||||
|
||||
|
||||
@@ -198,7 +198,9 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, void *user_data) {
|
||||
} else if (ConnectionStatus::Failed == status) {
|
||||
render->connection_status_str_ = "Failed";
|
||||
render->password_validating_time_ = 0;
|
||||
LOG_ERROR("rtc connection failed");
|
||||
render->is_create_connection_ = false;
|
||||
render->params_.enable_turn = true;
|
||||
render->rejoin_ = true;
|
||||
} else if (ConnectionStatus::Closed == status) {
|
||||
render->connection_status_str_ = "Closed";
|
||||
render->password_validating_time_ = 0;
|
||||
@@ -212,7 +214,9 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, void *user_data) {
|
||||
render->audio_capture_button_pressed_ = false;
|
||||
}
|
||||
render->exit_video_window_ = false;
|
||||
render->remote_password_.clear();
|
||||
if (!render->rejoin_) {
|
||||
render->remote_password_.clear();
|
||||
}
|
||||
if (render->dst_buffer_) {
|
||||
memset(render->dst_buffer_, 0, 1280 * 720 * 3);
|
||||
SDL_UpdateTexture(render->stream_texture_, NULL, render->dst_buffer_,
|
||||
|
||||
2
thirdparty/projectx
vendored
2
thirdparty/projectx
vendored
Submodule thirdparty/projectx updated: 0b0e61cdc4...0b11646619
Reference in New Issue
Block a user