Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Private Member Functions | List of all members
fml::MessageLoopLinux Class Reference

#include <message_loop_linux.h>

Inheritance diagram for fml::MessageLoopLinux:
fml::MessageLoopImpl fml::Wakeable fml::RefCountedThreadSafe< MessageLoopImpl > fml::internal::RefCountedThreadSafeBase

Private Member Functions

 ~MessageLoopLinux () override
 
void Run () override
 
void Terminate () override
 
void WakeUp (fml::TimePoint time_point) override
 

Additional Inherited Members

- Public Member Functions inherited from fml::MessageLoopImpl
virtual ~MessageLoopImpl ()
 
void PostTask (const fml::closure &task, fml::TimePoint target_time)
 
void AddTaskObserver (intptr_t key, const fml::closure &callback)
 
void RemoveTaskObserver (intptr_t key)
 
void DoRun ()
 
void DoTerminate ()
 
virtual TaskQueueId GetTaskQueueId () const
 
- Public Member Functions inherited from fml::Wakeable
virtual ~Wakeable ()
 
- Public Member Functions inherited from fml::RefCountedThreadSafe< MessageLoopImpl >
void Release () const
 
- Public Member Functions inherited from fml::internal::RefCountedThreadSafeBase
void AddRef () const
 
bool HasOneRef () const
 
void AssertHasOneRef () const
 
- Static Public Member Functions inherited from fml::MessageLoopImpl
static fml::RefPtr< MessageLoopImplCreate ()
 
- Protected Member Functions inherited from fml::MessageLoopImpl
void RunExpiredTasksNow ()
 
void RunSingleExpiredTaskNow ()
 
 MessageLoopImpl ()
 
- Protected Member Functions inherited from fml::RefCountedThreadSafe< MessageLoopImpl >
 RefCountedThreadSafe ()
 
 ~RefCountedThreadSafe ()
 
- Protected Member Functions inherited from fml::internal::RefCountedThreadSafeBase
 RefCountedThreadSafeBase ()
 
 ~RefCountedThreadSafeBase ()
 
bool Release () const
 
void Adopt ()
 

Detailed Description

Definition at line 16 of file message_loop_linux.h.

Member Function Documentation

◆ Run()

void fml::MessageLoopLinux::Run ( )
overrideprivatevirtual

Implements fml::MessageLoopImpl.

Definition at line 46 of file message_loop_linux.cc.

46 {
47 running_ = true;
48
49 while (running_) {
50 struct epoll_event event = {};
51
52 int epoll_result = FML_HANDLE_EINTR(
53 ::epoll_wait(epoll_fd_.get(), &event, 1, -1 /* timeout */));
54
55 // Errors are fatal.
56 if (event.events & (EPOLLERR | EPOLLHUP)) {
57 running_ = false;
58 continue;
59 }
60
61 // Timeouts are fatal since we specified an infinite timeout already.
62 // Likewise, > 1 is not possible since we waited for one result.
63 if (epoll_result != 1) {
64 running_ = false;
65 continue;
66 }
67
68 if (event.data.fd == timer_fd_.get()) {
69 OnEventFired();
70 }
71 }
72}
const T & get() const
FlKeyEvent * event
#define FML_HANDLE_EINTR(x)

◆ Terminate()

void fml::MessageLoopLinux::Terminate ( )
overrideprivatevirtual

Implements fml::MessageLoopImpl.

Definition at line 75 of file message_loop_linux.cc.

75 {
76 running_ = false;
78}
void WakeUp(fml::TimePoint time_point) override
static TimePoint Now()
Definition time_point.cc:49

◆ WakeUp()

void fml::MessageLoopLinux::WakeUp ( fml::TimePoint  time_point)
overrideprivatevirtual

Implements fml::Wakeable.

Definition at line 81 of file message_loop_linux.cc.

81 {
82 bool result = TimerRearm(timer_fd_.get(), time_point);
83 (void)result;
85}
GAsyncResult * result
#define FML_DCHECK(condition)
Definition logging.h:103
bool TimerRearm(int fd, fml::TimePoint time_point)
Rearms the timer to expire at the given time point.
Definition timerfd.cc:38

◆ ~MessageLoopLinux()

fml::MessageLoopLinux::~MessageLoopLinux ( )
overrideprivate

Definition at line 26 of file message_loop_linux.cc.

26 {
27 bool removed_source = AddOrRemoveTimerSource(false);
28 FML_CHECK(removed_source);
29}
#define FML_CHECK(condition)
Definition logging.h:85

The documentation for this class was generated from the following files: