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

#include <message_loop_android.h>

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

Private Member Functions

 ~MessageLoopAndroid () 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

Android implementation of MessageLoopImpl.

This implemenation wraps usage of Android's looper.

See also
https://developer.android.com/ndk/reference/group/looper

Definition at line 28 of file message_loop_android.h.

Member Function Documentation

◆ Run()

void fml::MessageLoopAndroid::Run ( )
overrideprivatevirtual

Implements fml::MessageLoopImpl.

Definition at line 61 of file message_loop_android.cc.

61 {
62 FML_DCHECK(looper_.get() == ALooper_forThread());
63
64 running_ = true;
65
66 while (running_) {
67 int result = ::ALooper_pollOnce(-1, // infinite timeout
68 nullptr, // out fd,
69 nullptr, // out events,
70 nullptr // out data
71 );
72 if (result == ALOOPER_POLL_TIMEOUT || result == ALOOPER_POLL_ERROR) {
73 // This handles the case where the loop is terminated using ALooper APIs.
74 running_ = false;
75 }
76 }
77}
GAsyncResult * result
#define FML_DCHECK(condition)
Definition logging.h:103

◆ Terminate()

void fml::MessageLoopAndroid::Terminate ( )
overrideprivatevirtual

Implements fml::MessageLoopImpl.

Definition at line 79 of file message_loop_android.cc.

79 {
80 running_ = false;
81 ALooper_wake(looper_.get());
82}

◆ WakeUp()

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

Implements fml::Wakeable.

Definition at line 84 of file message_loop_android.cc.

84 {
85 [[maybe_unused]] bool result = TimerRearm(timer_fd_.get(), time_point);
87}
const T & get() const
bool TimerRearm(int fd, fml::TimePoint time_point)
Rearms the timer to expire at the given time point.
Definition timerfd.cc:38

◆ ~MessageLoopAndroid()

fml::MessageLoopAndroid::~MessageLoopAndroid ( )
overrideprivate

Definition at line 56 of file message_loop_android.cc.

56 {
57 int remove_result = ::ALooper_removeFd(looper_.get(), timer_fd_.get());
58 FML_CHECK(remove_result == 1);
59}
#define FML_CHECK(condition)
Definition logging.h:85

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