Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Unified Diff: services/native_viewport/native_viewport_impl.cc

Issue 940293003: Add a Display and ContextProvider concept to mojom, use to recreate (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/native_viewport/native_viewport_impl.cc
diff --git a/services/native_viewport/native_viewport_impl.cc b/services/native_viewport/native_viewport_impl.cc
index 2f957b775e2be25ce950db50e71e8ab253e283d2..63f418370394860f0078f77662328b39346cb9fd 100644
--- a/services/native_viewport/native_viewport_impl.cc
+++ b/services/native_viewport/native_viewport_impl.cc
@@ -11,12 +11,9 @@
#include "base/time/time.h"
#include "mojo/converters/geometry/geometry_type_converters.h"
#include "mojo/converters/input_events/input_events_type_converters.h"
-#include "mojo/converters/surfaces/surfaces_type_converters.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_impl.h"
#include "mojo/public/cpp/application/interface_factory.h"
+#include "services/gles2/gpu_state.h"
#include "services/native_viewport/platform_viewport_headless.h"
-#include "services/native_viewport/viewport_surface.h"
#include "ui/events/event.h"
namespace native_viewport {
@@ -31,20 +28,17 @@ bool IsRateLimitedEventType(ui::Event* event) {
} // namespace
NativeViewportImpl::NativeViewportImpl(
- mojo::ApplicationImpl* app,
bool is_headless,
+ const scoped_refptr<gles2::GpuState>& gpu_state,
mojo::InterfaceRequest<mojo::NativeViewport> request)
: is_headless_(is_headless),
- widget_id_(0u),
+ context_provider_(gpu_state),
sent_metrics_(false),
metrics_(mojo::ViewportMetrics::New()),
waiting_for_event_ack_(false),
binding_(this, request.Pass()),
weak_factory_(this) {
binding_.set_error_handler(this);
- app->ConnectToService("mojo:surfaces_service", &surface_);
- // TODO(jamesr): Should be mojo_gpu_service
- app->ConnectToService("mojo:native_viewport_service", &gpu_service_);
}
NativeViewportImpl::~NativeViewportImpl() {
@@ -53,10 +47,8 @@ NativeViewportImpl::~NativeViewportImpl() {
platform_viewport_.reset();
}
-void NativeViewportImpl::Create(
- mojo::SizePtr size,
- const mojo::Callback<void(uint64_t, mojo::ViewportMetricsPtr metrics)>&
- callback) {
+void NativeViewportImpl::Create(mojo::SizePtr size,
+ const CreateCallback& callback) {
create_callback_ = callback;
metrics_->size = size.Clone();
if (is_headless_)
@@ -66,7 +58,8 @@ void NativeViewportImpl::Create(
platform_viewport_->Init(gfx::Rect(size.To<gfx::Size>()));
}
-void NativeViewportImpl::RequestMetrics(const MetricsCallback& callback) {
+void NativeViewportImpl::RequestMetrics(
+ const RequestMetricsCallback& callback) {
if (!sent_metrics_) {
callback.Run(metrics_.Clone());
sent_metrics_ = true;
@@ -92,21 +85,9 @@ void NativeViewportImpl::SetSize(mojo::SizePtr size) {
platform_viewport_->SetBounds(gfx::Rect(size.To<gfx::Size>()));
}
-void NativeViewportImpl::SubmittedFrame(mojo::SurfaceIdPtr child_surface_id) {
- if (child_surface_id_.is_null()) {
- // If this is the first indication that the client will use surfaces,
- // initialize that system.
- // TODO(jamesr): When everything is converted to surfaces initialize this
- // eagerly.
- viewport_surface_.reset(new ViewportSurface(
- surface_.Pass(), gpu_service_.get(), metrics_->size.To<gfx::Size>(),
- child_surface_id.To<cc::SurfaceId>()));
- if (widget_id_)
- viewport_surface_->SetWidgetId(widget_id_);
- }
- child_surface_id_ = child_surface_id.To<cc::SurfaceId>();
- if (viewport_surface_)
- viewport_surface_->SetChildId(child_surface_id_);
+void NativeViewportImpl::GetContextProvider(
+ mojo::InterfaceRequest<mojo::ContextProvider> request) {
+ context_provider_.Bind(request.Pass());
}
void NativeViewportImpl::SetEventDispatcher(
@@ -126,19 +107,16 @@ void NativeViewportImpl::OnMetricsChanged(mojo::ViewportMetricsPtr metrics) {
metrics_callback_.reset();
sent_metrics_ = true;
}
- if (viewport_surface_)
- viewport_surface_->SetSize(metrics_->size.To<gfx::Size>());
}
void NativeViewportImpl::OnAcceleratedWidgetAvailable(
gfx::AcceleratedWidget widget) {
- widget_id_ = static_cast<uint64_t>(bit_cast<uintptr_t>(widget));
- // TODO(jamesr): Remove once everything is converted to surfaces.
- create_callback_.Run(widget_id_, metrics_.Clone());
+ context_provider_.SetAcceleratedWidget(widget);
+ // TODO: The metrics here might not match the actual window size on android
+ // where we don't know the actual size until the first OnMetricsChanged call.
+ create_callback_.Run(metrics_.Clone());
sent_metrics_ = true;
create_callback_.reset();
- if (viewport_surface_)
- viewport_surface_->SetWidgetId(widget_id_);
}
bool NativeViewportImpl::OnEvent(ui::Event* ui_event) {
« no previous file with comments | « services/native_viewport/native_viewport_impl.h ('k') | services/native_viewport/onscreen_context_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698