mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 12:15: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
|
// Main loop
|
||||||
while (!exit_) {
|
while (!exit_) {
|
||||||
if (SignalStatus::SignalConnected == signal_status_ &&
|
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");
|
LOG_INFO("Connected with signal server, create p2p connection");
|
||||||
is_create_connection_ =
|
is_create_connection_ =
|
||||||
CreateConnection(peer_, client_id_, password_saved_.c_str()) ? false
|
CreateConnection(peer_, client_id_, password_saved_.c_str()) ? false
|
||||||
: true;
|
: 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_ ||
|
if (!inited_ ||
|
||||||
localization_language_index_last_ != localization_language_index_) {
|
localization_language_index_last_ != localization_language_index_) {
|
||||||
connect_button_label_ =
|
connect_button_label_ =
|
||||||
@@ -541,8 +556,8 @@ int Render::Run() {
|
|||||||
LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_,
|
LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_,
|
||||||
remote_id_.c_str());
|
remote_id_.c_str());
|
||||||
if (peer_reserved_) {
|
if (peer_reserved_) {
|
||||||
DestroyPeer(&peer_reserved_);
|
|
||||||
LOG_INFO("Destroy peer[reserved]");
|
LOG_INFO("Destroy peer[reserved]");
|
||||||
|
DestroyPeer(&peer_reserved_);
|
||||||
}
|
}
|
||||||
|
|
||||||
rejoin_ = false;
|
rejoin_ = false;
|
||||||
@@ -667,17 +682,16 @@ int Render::Run() {
|
|||||||
device_controller_factory_ = nullptr;
|
device_controller_factory_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_create_connection_) {
|
if (peer_) {
|
||||||
LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_);
|
LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_);
|
||||||
LeaveConnection(peer_, client_id_);
|
LeaveConnection(peer_, client_id_);
|
||||||
is_client_mode_ = false;
|
is_client_mode_ = false;
|
||||||
}
|
LOG_INFO("Destroy peer");
|
||||||
|
|
||||||
if (peer_) {
|
|
||||||
DestroyPeer(&peer_);
|
DestroyPeer(&peer_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer_reserved_) {
|
if (peer_reserved_) {
|
||||||
|
LOG_INFO("Destroy peer[reserved]");
|
||||||
DestroyPeer(&peer_reserved_);
|
DestroyPeer(&peer_reserved_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,9 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, void *user_data) {
|
|||||||
} else if (ConnectionStatus::Failed == status) {
|
} else if (ConnectionStatus::Failed == status) {
|
||||||
render->connection_status_str_ = "Failed";
|
render->connection_status_str_ = "Failed";
|
||||||
render->password_validating_time_ = 0;
|
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) {
|
} else if (ConnectionStatus::Closed == status) {
|
||||||
render->connection_status_str_ = "Closed";
|
render->connection_status_str_ = "Closed";
|
||||||
render->password_validating_time_ = 0;
|
render->password_validating_time_ = 0;
|
||||||
@@ -212,7 +214,9 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, void *user_data) {
|
|||||||
render->audio_capture_button_pressed_ = false;
|
render->audio_capture_button_pressed_ = false;
|
||||||
}
|
}
|
||||||
render->exit_video_window_ = false;
|
render->exit_video_window_ = false;
|
||||||
render->remote_password_.clear();
|
if (!render->rejoin_) {
|
||||||
|
render->remote_password_.clear();
|
||||||
|
}
|
||||||
if (render->dst_buffer_) {
|
if (render->dst_buffer_) {
|
||||||
memset(render->dst_buffer_, 0, 1280 * 720 * 3);
|
memset(render->dst_buffer_, 0, 1280 * 720 * 3);
|
||||||
SDL_UpdateTexture(render->stream_texture_, NULL, render->dst_buffer_,
|
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