提交 97a375f0 编写于 作者: A Adam Barth

Flutter for Modroid should use vsync

This patch teaches Flutter how to connect to the vsync service on Modroid.
Also, remove our now-redunant copy of vsync.mojom.

Fixes #589
上级 0069b937
......@@ -28,6 +28,5 @@ dart_pkg("sky_services") {
"//sky/services/pointer:interfaces",
"//sky/services/raw_keyboard:interfaces",
"//sky/services/updater:interfaces",
"//sky/services/vsync:interfaces",
]
}
......@@ -5,21 +5,13 @@
import("//mojo/public/tools/bindings/mojom.gni")
group("vsync") {
deps = [
":interfaces",
]
deps = []
if (is_android || is_ios) {
deps += [ ":vsync_lib" ]
}
}
mojom("interfaces") {
sources = [
"vsync.mojom",
]
}
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
......@@ -31,7 +23,7 @@ if (is_android) {
"//base:base_java",
"//mojo/public/java:bindings",
"//mojo/public/java:system",
":interfaces_java",
"//mojo/services/vsync/interfaces:interfaces_java",
]
}
}
......@@ -45,7 +37,7 @@ if (is_ios) {
deps = [
"//base:base",
"//mojo/public/cpp/application",
":interfaces",
"//mojo/services/vsync/interfaces",
]
}
}
......@@ -8,7 +8,7 @@
#include "base/macros.h"
#include "mojo/public/cpp/application/interface_factory.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "sky/services/vsync/vsync.mojom.h"
#include "mojo/services/vsync/interfaces/vsync.mojom.h"
#if __OBJC__
@class VSyncClient;
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[DartPackage="sky_services"]
module vsync;
[ServiceName="vsync::VSyncProvider"]
interface VSyncProvider {
// Timebase is in MojoGetTimeTicksNow.
// Only one callback can be parked at a given time.
AwaitVSync() => (int64 time_stamp);
};
......@@ -43,7 +43,7 @@ source_set("common") {
"//mojo/services/asset_bundle/interfaces",
"//mojo/services/keyboard/interfaces",
"//mojo/services/navigation/interfaces",
"//mojo/services/network/interfaces",
"//mojo/services/vsync/interfaces",
"//services/asset_bundle:lib",
"//skia",
"//sky/compositor",
......@@ -52,7 +52,6 @@ source_set("common") {
"//sky/engine/wtf",
"//sky/services/engine:interfaces",
"//sky/services/pointer:interfaces",
"//sky/services/vsync:interfaces",
"//sky/shell/dart",
"//ui/gfx",
"//ui/gfx/geometry",
......@@ -172,6 +171,7 @@ if (is_android) {
"//mojo/services/keyboard/interfaces:interfaces_java",
"//mojo/services/network/interfaces:interfaces_java",
"//mojo/services/sensors/interfaces:interfaces_java",
"//mojo/services/vsync/interfaces:interfaces_java",
"//services/keyboard",
"//services/sensors:sensors_lib",
"//sky/services/activity:activity_lib",
......@@ -184,7 +184,6 @@ if (is_android) {
"//sky/services/raw_keyboard:interfaces_java",
"//sky/services/raw_keyboard:raw_keyboard_lib",
"//sky/services/updater:interfaces_java",
"//sky/services/vsync:interfaces_java",
"//sky/services/vsync:vsync_lib",
]
}
......
......@@ -6,7 +6,7 @@
#define SKY_SHELL_UI_ANIMATOR_H_
#include "base/memory/weak_ptr.h"
#include "sky/services/vsync/vsync.mojom.h"
#include "mojo/services/vsync/interfaces/vsync.mojom.h"
#include "sky/shell/ui/engine.h"
namespace sky {
......
......@@ -120,12 +120,13 @@ void Engine::SetServices(ServicesDataPtr services) {
services_ = services.Pass();
#if defined(OS_ANDROID) || defined(OS_IOS)
if (services_->services_provided_by_embedder) {
// TODO(abarth): Implement VSyncProvider on other platforms.
vsync::VSyncProviderPtr vsync_provider;
if (services_->shell) {
mojo::ConnectToService(services_->shell.get(), "mojo:vsync", &vsync_provider);
} else {
mojo::ConnectToService(services_->services_provided_by_embedder.get(), &vsync_provider);
animator_->set_vsync_provider(vsync_provider.Pass());
}
animator_->set_vsync_provider(vsync_provider.Pass());
#endif
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册