未验证 提交 bf138516 编写于 作者: K Kaushik Iska 提交者: GitHub

Do not add null task observers (#11315)

Potential fix for: https://github.com/flutter/flutter/issues/38778
上级 9b1f6d37
......@@ -17,7 +17,7 @@ class MessageLoopTaskQueues::MergedQueuesRunner {
TaskQueueId owner,
MutexType type = MutexType::kTasks)
: owner_(owner),
subsumed_(task_queues_._kUnmerged),
subsumed_(MessageLoopTaskQueues::_kUnmerged),
task_queues_(task_queues),
type_(type) {
task_queues_.GetMutex(owner, type).lock();
......
......@@ -64,7 +64,11 @@ void MessageLoopImpl::AddTaskObserver(intptr_t key, fml::closure callback) {
FML_DCHECK(MessageLoop::GetCurrent().GetLoopImpl().get() == this)
<< "Message loop task observer must be added on the same thread as the "
"loop.";
task_queue_->AddTaskObserver(queue_id_, key, callback);
if (callback != nullptr) {
task_queue_->AddTaskObserver(queue_id_, key, callback);
} else {
FML_LOG(ERROR) << "Tried to add a null TaskObserver.";
}
}
void MessageLoopImpl::RemoveTaskObserver(intptr_t key) {
......
......@@ -125,6 +125,7 @@ size_t MessageLoopTaskQueues::GetNumPendingTasks(TaskQueueId queue_id) {
void MessageLoopTaskQueues::AddTaskObserver(TaskQueueId queue_id,
intptr_t key,
fml::closure callback) {
FML_DCHECK(callback != nullptr) << "Observer callback must be non-null.";
std::scoped_lock lock(GetMutex(queue_id, MutexType::kObservers));
task_observers_[queue_id][key] = std::move(callback);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册