Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
fml
memory
task_runner_checker.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "flutter/fml/memory/task_runner_checker.h"
6
7
namespace
fml
{
8
9
TaskRunnerChecker::TaskRunnerChecker
()
10
: initialized_queue_id_(InitTaskQueueId()),
11
subsumed_queue_ids_(
12
MessageLoopTaskQueues
::GetInstance()->GetSubsumedTaskQueueId(
13
initialized_queue_id_)){};
14
15
TaskRunnerChecker::~TaskRunnerChecker
() =
default
;
16
17
bool
TaskRunnerChecker::RunsOnCreationTaskRunner
()
const
{
18
FML_CHECK
(
fml::MessageLoop::IsInitializedForCurrentThread
());
19
const
auto
current_queue_id =
MessageLoop::GetCurrentTaskQueueId
();
20
if
(
RunsOnTheSameThread
(current_queue_id, initialized_queue_id_)) {
21
return
true
;
22
}
23
for
(
auto
& subsumed : subsumed_queue_ids_) {
24
if
(
RunsOnTheSameThread
(current_queue_id, subsumed)) {
25
return
true
;
26
}
27
}
28
return
false
;
29
};
30
31
bool
TaskRunnerChecker::RunsOnTheSameThread
(
TaskQueueId
queue_a,
32
TaskQueueId
queue_b) {
33
if
(queue_a == queue_b) {
34
return
true
;
35
}
36
37
auto
queues =
MessageLoopTaskQueues::GetInstance
();
38
if
(queues->Owns(queue_a, queue_b)) {
39
return
true
;
40
}
41
if
(queues->Owns(queue_b, queue_a)) {
42
return
true
;
43
}
44
return
false
;
45
};
46
47
TaskQueueId
TaskRunnerChecker::InitTaskQueueId() {
48
MessageLoop::EnsureInitializedForCurrentThread
();
49
return
MessageLoop::GetCurrentTaskQueueId
();
50
};
51
52
}
// namespace fml
fml::MessageLoopTaskQueues
Definition
message_loop_task_queues.h:66
fml::MessageLoopTaskQueues::GetInstance
static MessageLoopTaskQueues * GetInstance()
Definition
message_loop_task_queues.cc:44
fml::MessageLoop::EnsureInitializedForCurrentThread
static void EnsureInitializedForCurrentThread()
Definition
message_loop.cc:27
fml::MessageLoop::IsInitializedForCurrentThread
static bool IsInitializedForCurrentThread()
Definition
message_loop.cc:35
fml::MessageLoop::GetCurrentTaskQueueId
static TaskQueueId GetCurrentTaskQueueId()
Definition
message_loop.cc:76
fml::TaskQueueId
Definition
task_queue_id.h:15
fml::TaskRunnerChecker::TaskRunnerChecker
TaskRunnerChecker()
Definition
task_runner_checker.cc:9
fml::TaskRunnerChecker::RunsOnCreationTaskRunner
bool RunsOnCreationTaskRunner() const
Definition
task_runner_checker.cc:17
fml::TaskRunnerChecker::~TaskRunnerChecker
~TaskRunnerChecker()
fml::TaskRunnerChecker::RunsOnTheSameThread
static bool RunsOnTheSameThread(TaskQueueId queue_a, TaskQueueId queue_b)
Definition
task_runner_checker.cc:31
FML_CHECK
#define FML_CHECK(condition)
Definition
logging.h:85
fml
Definition
ascii_trie.cc:9
Generated on Fri Apr 26 2024 06:14:05 for Flutter Engine by
1.9.8