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

Unified Diff: components/view_manager/display_manager.cc

Issue 1245683004: Mandoline: Merge Surfaces and Views apps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: August 18 Rebase 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/display_manager.cc
diff --git a/components/view_manager/display_manager.cc b/components/view_manager/display_manager.cc
index ab772c4dbd1c07672836dda81d4fa6fb236ca34f..c0954615ffcf3ee0c53be6b43ad89d652fde96ae 100644
--- a/components/view_manager/display_manager.cc
+++ b/components/view_manager/display_manager.cc
@@ -7,11 +7,11 @@
#include "base/numerics/safe_conversions.h"
#include "components/view_manager/display_manager_factory.h"
#include "components/view_manager/gles2/gpu_state.h"
-#include "components/view_manager/native_viewport/onscreen_context_provider.h"
#include "components/view_manager/public/interfaces/gpu.mojom.h"
#include "components/view_manager/public/interfaces/quads.mojom.h"
#include "components/view_manager/public/interfaces/surfaces.mojom.h"
#include "components/view_manager/server_view.h"
+#include "components/view_manager/surfaces/surfaces_state.h"
#include "components/view_manager/view_coordinate_conversions.h"
#include "mojo/application/public/cpp/application_connection.h"
#include "mojo/application/public/cpp/application_impl.h"
@@ -105,24 +105,32 @@ DisplayManagerFactory* DisplayManager::factory_ = nullptr;
DisplayManager* DisplayManager::Create(
bool is_headless,
mojo::ApplicationImpl* app_impl,
- const scoped_refptr<gles2::GpuState>& gpu_state) {
- if (factory_)
- return factory_->CreateDisplayManager(is_headless, app_impl, gpu_state);
- return new DefaultDisplayManager(is_headless, app_impl, gpu_state);
+ const scoped_refptr<gles2::GpuState>& gpu_state,
+ const scoped_refptr<surfaces::SurfacesState>& surfaces_state) {
+ if (factory_) {
+ return factory_->CreateDisplayManager(is_headless,
+ app_impl,
+ gpu_state,
+ surfaces_state);
+ }
+ return new DefaultDisplayManager(is_headless,
+ app_impl,
+ gpu_state,
+ surfaces_state);
}
DefaultDisplayManager::DefaultDisplayManager(
bool is_headless,
mojo::ApplicationImpl* app_impl,
- const scoped_refptr<gles2::GpuState>& gpu_state)
+ const scoped_refptr<gles2::GpuState>& gpu_state,
+ const scoped_refptr<surfaces::SurfacesState>& surfaces_state)
: is_headless_(is_headless),
app_impl_(app_impl),
gpu_state_(gpu_state),
+ surfaces_state_(surfaces_state),
delegate_(nullptr),
draw_timer_(false, false),
frame_pending_(false),
- context_provider_(
- new native_viewport::OnscreenContextProvider(gpu_state)),
weak_factory_(this) {
metrics_.size_in_pixels = mojo::Size::New();
metrics_.size_in_pixels->width = 800;
@@ -148,28 +156,9 @@ void DefaultDisplayManager::Init(DisplayManagerDelegate* delegate) {
}
platform_window_->SetBounds(bounds);
platform_window_->Show();
-
- mojo::ContextProviderPtr context_provider;
- context_provider_->Bind(GetProxy(&context_provider).Pass());
- mojo::DisplayFactoryPtr display_factory;
- mojo::URLRequestPtr request(mojo::URLRequest::New());
- request->url = mojo::String::From("mojo:surfaces_service");
- app_impl_->ConnectToService(request.Pass(), &display_factory);
- // TODO(fsamuel): We should indicate to the delegate that this object failed
- // to initialize.
- if (!display_factory)
- return;
- display_factory->Create(context_provider.Pass(),
- nullptr, // returner - we never submit resources.
- GetProxy(&display_));
}
DefaultDisplayManager::~DefaultDisplayManager() {
- // Destroy before |platform_window_| because this will destroy
- // CommandBufferDriver objects that contain child windows. Otherwise if this
- // class destroys its window first, X errors will occur.
- context_provider_.reset();
-
// Destroy the PlatformWindow early on as it may call us back during
// destruction and we want to be in a known state.
platform_window_.reset();
@@ -222,10 +211,10 @@ void DefaultDisplayManager::Draw() {
frame->passes.push_back(pass.Pass());
frame->resources.resize(0u);
frame_pending_ = true;
- if (display_) {
- display_->SubmitFrame(frame.Pass(),
- base::Bind(&DefaultDisplayManager::DidDraw,
- weak_factory_.GetWeakPtr()));
+ if (top_level_display_client_) {
+ top_level_display_client_->SubmitFrame(
+ frame.Pass(),
+ base::Bind(&DefaultDisplayManager::DidDraw, base::Unretained(this)));
}
dirty_rect_ = gfx::Rect();
}
@@ -347,7 +336,8 @@ void DefaultDisplayManager::OnLostCapture() {
void DefaultDisplayManager::OnAcceleratedWidgetAvailable(
gfx::AcceleratedWidget widget,
float device_pixel_ratio) {
- context_provider_->SetAcceleratedWidget(widget);
+ top_level_display_client_.reset(
+ new surfaces::TopLevelDisplayClient(widget, gpu_state_, surfaces_state_));
UpdateMetrics(metrics_.size_in_pixels.To<gfx::Size>(), device_pixel_ratio);
}

Powered by Google App Engine
This is Rietveld 408576698