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

Unified Diff: examples/surfaces_app/child_impl.cc

Issue 807733002: Split surface id and simplify connecting to surfaces service (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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: examples/surfaces_app/child_impl.cc
diff --git a/examples/surfaces_app/child_impl.cc b/examples/surfaces_app/child_impl.cc
index c0193b9e55ee28f9ee5f6eabff1a27e728964db8..cd0cf481364ecf1d37397cf99ffffbb4766389f4 100644
--- a/examples/surfaces_app/child_impl.cc
+++ b/examples/surfaces_app/child_impl.cc
@@ -28,11 +28,10 @@ using cc::SolidColorDrawQuad;
using cc::DelegatedFrameData;
using cc::CompositorFrame;
-ChildImpl::ChildImpl(ApplicationConnection* surfaces_service_connection)
- : weak_factory_(this) {
- surfaces_service_connection->ConnectToService(&surfaces_service_);
- surfaces_service_->CreateSurfaceConnection(base::Bind(
- &ChildImpl::SurfaceConnectionCreated, weak_factory_.GetWeakPtr()));
+ChildImpl::ChildImpl(ApplicationConnection* surfaces_service_connection) {
+ surfaces_service_connection->ConnectToService(&surface_);
+ surface_.set_client(this);
+ surface_.WaitForIncomingMethodCall(); // Wait for ID namespace to arrive.
}
ChildImpl::~ChildImpl() {
@@ -40,24 +39,8 @@ ChildImpl::~ChildImpl() {
surface_->DestroySurface(mojo::SurfaceId::From(id_));
}
-void ChildImpl::ProduceFrame(
- ColorPtr color,
- SizePtr size,
- const mojo::Callback<void(SurfaceIdPtr id)>& callback) {
- color_ = color.To<SkColor>();
- size_ = size.To<gfx::Size>();
- produce_callback_ = callback;
- if (allocator_)
- Draw();
-}
-
-void ChildImpl::SurfaceConnectionCreated(SurfacePtr surface,
- uint32_t id_namespace) {
- surface_ = surface.Pass();
- surface_.set_client(this);
+void ChildImpl::SetIdNamespace(uint32_t id_namespace) {
allocator_.reset(new cc::SurfaceIdAllocator(id_namespace));
- if (!produce_callback_.is_null())
- Draw();
}
void ChildImpl::ReturnResources(
@@ -65,16 +48,19 @@ void ChildImpl::ReturnResources(
DCHECK(!resources.size());
}
-void ChildImpl::Draw() {
+void ChildImpl::ProduceFrame(
+ ColorPtr color,
+ SizePtr size_ptr,
+ const mojo::Callback<void(SurfaceIdPtr id)>& callback) {
id_ = allocator_->GenerateId();
- surface_->CreateSurface(mojo::SurfaceId::From(id_),
- mojo::Size::From(size_));
- gfx::Rect rect(size_);
+ surface_->CreateSurface(mojo::SurfaceId::From(id_));
+ gfx::Size size = size_ptr.To<gfx::Size>();
+ gfx::Rect rect(size);
RenderPassId id(1, 1);
scoped_ptr<RenderPass> pass = RenderPass::Create();
pass->SetNew(id, rect, rect, gfx::Transform());
- CreateAndAppendSimpleSharedQuadState(pass.get(), gfx::Transform(), size_);
+ CreateAndAppendSimpleSharedQuadState(pass.get(), gfx::Transform(), size);
SolidColorDrawQuad* color_quad =
pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
@@ -82,7 +68,7 @@ void ChildImpl::Draw() {
color_quad->SetNew(pass->shared_quad_state_list.back(),
rect,
rect,
- color_,
+ color.To<SkColor>(),
force_anti_aliasing_off);
scoped_ptr<DelegatedFrameData> delegated_frame_data(new DelegatedFrameData);
@@ -93,7 +79,7 @@ void ChildImpl::Draw() {
surface_->SubmitFrame(mojo::SurfaceId::From(id_), mojo::Frame::From(*frame),
mojo::Closure());
- produce_callback_.Run(SurfaceId::From(id_));
+ callback.Run(SurfaceId::From(id_));
}
} // namespace examples

Powered by Google App Engine
This is Rietveld 408576698