Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Revert "Re-arm timer as necessary in MessageLoopFuchsia" #16568

Merged
merged 1 commit into from
Feb 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions fml/message_loop_unittests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "flutter/fml/build_config.h"
#include "flutter/fml/concurrent_message_loop.h"
#include "flutter/fml/message_loop.h"
#include "flutter/fml/message_loop_impl.h"
#include "flutter/fml/synchronization/count_down_latch.h"
#include "flutter/fml/synchronization/waitable_event.h"
#include "flutter/fml/task_runner.h"
Expand Down Expand Up @@ -316,32 +315,3 @@ TEST(MessageLoop, CanCreateConcurrentMessageLoop) {
latch.Wait();
ASSERT_GE(thread_ids.size(), 1u);
}

TEST(MessageLoop, TIME_SENSITIVE(WakeUpTimersAreSingletons)) {
auto loop_impl = fml::MessageLoopImpl::Create();

const auto t1 = fml::TimeDelta::FromMilliseconds(10);
const auto t2 = fml::TimeDelta::FromMilliseconds(20);

const auto begin = fml::TimePoint::Now();

// Register a task scheduled for 10ms in the future. This schedules a
// WakeUp call on the MessageLoopImpl with that fml::TimePoint
loop_impl->PostTask(
[&]() {
auto delta = fml::TimePoint::Now() - begin;
auto ms = delta.ToMillisecondsF();
ASSERT_GE(ms, 10);
ASSERT_LE(ms, 25);

loop_impl->Terminate();
},
fml::TimePoint::Now() + t1);

// Call WakeUp manually to change the WakeUp time to the future. If the
// timer is correctly set up to be rearmed instead of a new timer scheduled,
// the above task will be executed at t2 instead of t1 now.
loop_impl->WakeUp(fml::TimePoint::Now() + t2);

loop_impl->Run();
}
15 changes: 4 additions & 11 deletions fml/platform/fuchsia/message_loop_fuchsia.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@
#include "flutter/fml/platform/fuchsia/message_loop_fuchsia.h"

#include <lib/async-loop/default.h>
#include <lib/async/cpp/task.h>
#include <lib/zx/time.h>

namespace fml {

MessageLoopFuchsia::MessageLoopFuchsia()
: loop_(&kAsyncLoopConfigAttachToCurrentThread) {
auto handler = [this](async_dispatcher_t* dispatcher, async::Task* task,
zx_status_t status) { RunExpiredTasksNow(); };
task_.set_handler(handler);
}
: loop_(&kAsyncLoopConfigAttachToCurrentThread) {}

MessageLoopFuchsia::~MessageLoopFuchsia() = default;

Expand All @@ -33,12 +30,8 @@ void MessageLoopFuchsia::WakeUp(fml::TimePoint time_point) {
due_time = zx::nsec((time_point - now).ToNanoseconds());
}

std::scoped_lock lock(task_mutex_);

auto status = task_.Cancel();
FML_DCHECK(status == ZX_OK || status == ZX_ERR_NOT_FOUND);

status = task_.PostDelayed(loop_.dispatcher(), due_time);
auto status = async::PostDelayedTask(
loop_.dispatcher(), [this]() { RunExpiredTasksNow(); }, due_time);
FML_DCHECK(status == ZX_OK);
}

Expand Down
3 changes: 0 additions & 3 deletions fml/platform/fuchsia/message_loop_fuchsia.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#define FLUTTER_FML_PLATFORM_FUCHSIA_MESSAGE_LOOP_FUCHSIA_H_

#include <lib/async-loop/cpp/loop.h>
#include <lib/async/cpp/task.h>

#include "flutter/fml/macros.h"
#include "flutter/fml/message_loop_impl.h"
Expand All @@ -26,8 +25,6 @@ class MessageLoopFuchsia : public MessageLoopImpl {
void WakeUp(fml::TimePoint time_point) override;

async::Loop loop_;
std::mutex task_mutex_;
async::Task task_;

FML_FRIEND_MAKE_REF_COUNTED(MessageLoopFuchsia);
FML_FRIEND_REF_COUNTED_THREAD_SAFE(MessageLoopFuchsia);
Expand Down