mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[fix] clear task queue before IceTransportController released
This commit is contained in:
@@ -54,12 +54,27 @@ class TaskQueue {
|
||||
std::chrono::steady_clock::now() + std::chrono::milliseconds(delay_ms);
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(mutex_);
|
||||
taskQueue_.emplace(execute_time,
|
||||
std::move(task)); // 确保参数匹配 TaskItem 构造
|
||||
taskQueue_.emplace(execute_time, std::move(task));
|
||||
}
|
||||
cond_var_.notify_one();
|
||||
}
|
||||
|
||||
void ClearTasks() {
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(mutex_);
|
||||
stop_ = true;
|
||||
while (!taskQueue_.empty()) {
|
||||
taskQueue_.pop();
|
||||
}
|
||||
}
|
||||
cond_var_.notify_all();
|
||||
for (std::thread &worker : workers_) {
|
||||
if (worker.joinable()) {
|
||||
worker.join();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
struct TaskItem {
|
||||
std::chrono::steady_clock::time_point execute_time;
|
||||
|
||||
@@ -26,6 +26,13 @@ IceTransportController::IceTransportController(
|
||||
}
|
||||
|
||||
IceTransportController::~IceTransportController() {
|
||||
if (task_queue_cc_) {
|
||||
task_queue_cc_->ClearTasks();
|
||||
}
|
||||
if (task_queue_encode_) {
|
||||
task_queue_encode_->ClearTasks();
|
||||
}
|
||||
|
||||
user_data_ = nullptr;
|
||||
video_codec_inited_ = false;
|
||||
audio_codec_inited_ = false;
|
||||
|
||||
Reference in New Issue
Block a user