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

Unified Diff: components/view_manager/server_view.cc

Issue 1281663002: Mandoline: Allow submitting CompositorFrames directly to mojo::Views (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Yet anther rebase (YAR!!!) Created 5 years, 4 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: components/view_manager/server_view.cc
diff --git a/components/view_manager/server_view.cc b/components/view_manager/server_view.cc
index 411e0f90add0b237aef8ffe83ae66c9afa03322b..6e029da21ae7f055456b0d2dabc875f2d9eb54b6 100644
--- a/components/view_manager/server_view.cc
+++ b/components/view_manager/server_view.cc
@@ -9,6 +9,7 @@
#include "base/strings/stringprintf.h"
#include "components/view_manager/server_view_delegate.h"
#include "components/view_manager/server_view_observer.h"
+#include "mojo/converters/geometry/geometry_type_converters.h"
namespace view_manager {
@@ -22,7 +23,8 @@ ServerView::ServerView(ServerViewDelegate* delegate, const ViewId& id)
// Don't notify newly added observers during notification. This causes
// problems for code that adds an observer as part of an observer
// notification (such as ServerViewDrawTracker).
- observers_(base::ObserverList<ServerViewObserver>::NOTIFY_EXISTING_ONLY) {
+ observers_(base::ObserverList<ServerViewObserver>::NOTIFY_EXISTING_ONLY),
+ binding_(this) {
DCHECK(delegate); // Must provide a delegate.
}
@@ -47,6 +49,10 @@ void ServerView::RemoveObserver(ServerViewObserver* observer) {
observers_.RemoveObserver(observer);
}
+void ServerView::Bind(mojo::InterfaceRequest<CompositorFrameReceiver> request) {
+ binding_.Bind(request.Pass());
+}
+
void ServerView::Add(ServerView* child) {
// We assume validation checks happened already.
DCHECK(child);
@@ -217,6 +223,14 @@ void ServerView::SetSurfaceId(cc::SurfaceId surface_id) {
delegate_->OnScheduleViewPaint(this);
}
+void ServerView::SubmitCompositorFrame(
+ mojo::CompositorFramePtr frame,
+ const SubmitCompositorFrameCallback& callback) {
+ gfx::Size frame_size = frame->passes[0]->output_rect.To<gfx::Rect>().size();
+ delegate_->SubmitCompositorFrame(this, frame.Pass(), callback);
+ last_submitted_frame_size_ = frame_size;
+}
+
#if !defined(NDEBUG)
std::string ServerView::GetDebugWindowHierarchy() const {
std::string result;

Powered by Google App Engine
This is Rietveld 408576698