Skip to content

Commit

Permalink
Do not add null task observers
Browse files Browse the repository at this point in the history
Potential fix for: flutter/flutter#38778
  • Loading branch information
Kaushik Iska committed Aug 20, 2019
1 parent 251e280 commit 4e90327
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
2 changes: 1 addition & 1 deletion fml/merged_queues_runner.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
6 changes: 5 additions & 1 deletion fml/message_loop_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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 != null) {
task_queue_->AddTaskObserver(queue_id_, key, callback);
} else {
FML_LOG(ERROR) << "Tried to add a null TaskObserver.";
}
}

void MessageLoopImpl::RemoveTaskObserver(intptr_t key) {
Expand Down
1 change: 1 addition & 0 deletions fml/message_loop_task_queues.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down

0 comments on commit 4e90327

Please sign in to comment.