mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 12:15: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::chrono::steady_clock::now() + std::chrono::milliseconds(delay_ms);
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(mutex_);
|
std::unique_lock<std::mutex> lock(mutex_);
|
||||||
taskQueue_.emplace(execute_time,
|
taskQueue_.emplace(execute_time, std::move(task));
|
||||||
std::move(task)); // 确保参数匹配 TaskItem 构造
|
|
||||||
}
|
}
|
||||||
cond_var_.notify_one();
|
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:
|
private:
|
||||||
struct TaskItem {
|
struct TaskItem {
|
||||||
std::chrono::steady_clock::time_point execute_time;
|
std::chrono::steady_clock::time_point execute_time;
|
||||||
|
|||||||
@@ -26,6 +26,13 @@ IceTransportController::IceTransportController(
|
|||||||
}
|
}
|
||||||
|
|
||||||
IceTransportController::~IceTransportController() {
|
IceTransportController::~IceTransportController() {
|
||||||
|
if (task_queue_cc_) {
|
||||||
|
task_queue_cc_->ClearTasks();
|
||||||
|
}
|
||||||
|
if (task_queue_encode_) {
|
||||||
|
task_queue_encode_->ClearTasks();
|
||||||
|
}
|
||||||
|
|
||||||
user_data_ = nullptr;
|
user_data_ = nullptr;
|
||||||
video_codec_inited_ = false;
|
video_codec_inited_ = false;
|
||||||
audio_codec_inited_ = false;
|
audio_codec_inited_ = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user