| Index: mojo/services/public/cpp/view_manager/lib/view.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/lib/view.cc b/mojo/services/public/cpp/view_manager/lib/view.cc
|
| index 797e8d519e32795910a15f6c4232aa95adbdbe1f..c3bf63a750824e753ec5d2c36b6fb38b87b8d0bd 100644
|
| --- a/mojo/services/public/cpp/view_manager/lib/view.cc
|
| +++ b/mojo/services/public/cpp/view_manager/lib/view.cc
|
| @@ -4,10 +4,15 @@
|
|
|
| #include "mojo/services/public/cpp/view_manager/view.h"
|
|
|
| +#include "mojo/public/cpp/application/connect.h"
|
| #include "mojo/public/cpp/application/service_provider_impl.h"
|
| +#include "mojo/public/interfaces/application/shell.mojom.h"
|
| +#include "mojo/services/public/cpp/view_manager/lib/bitmap_uploader.h"
|
| #include "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.h"
|
| #include "mojo/services/public/cpp/view_manager/lib/view_private.h"
|
| #include "mojo/services/public/cpp/view_manager/view_observer.h"
|
| +#include "mojo/services/public/interfaces/gpu/gpu.mojom.h"
|
| +#include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h"
|
| #include "ui/gfx/canvas.h"
|
|
|
| namespace mojo {
|
| @@ -299,15 +304,20 @@ void View::SetSurfaceId(SurfaceIdPtr id) {
|
|
|
| void View::SetContents(const SkBitmap& contents) {
|
| if (manager_) {
|
| - static_cast<ViewManagerClientImpl*>(manager_)->SetViewContents(id_,
|
| - contents);
|
| + if (!bitmap_uploader_)
|
| + CreateBitmapUploader();
|
| + bitmap_uploader_->SetSize(bounds_.size());
|
| + bitmap_uploader_->SetBitmap(contents);
|
| }
|
| }
|
|
|
| void View::SetColor(SkColor color) {
|
| - gfx::Canvas canvas(bounds_.size(), 1.0f, true);
|
| - canvas.DrawColor(color);
|
| - SetContents(skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(true));
|
| + if (manager_) {
|
| + if (!bitmap_uploader_)
|
| + CreateBitmapUploader();
|
| + bitmap_uploader_->SetSize(bounds_.size());
|
| + bitmap_uploader_->SetColor(color);
|
| + }
|
| }
|
|
|
| void View::SetFocus() {
|
| @@ -390,4 +400,20 @@ void View::LocalSetBounds(const gfx::Rect& old_bounds,
|
| bounds_ = new_bounds;
|
| }
|
|
|
| +void View::CreateBitmapUploader() {
|
| + ViewManagerClientImpl* vmci = static_cast<ViewManagerClientImpl*>(manager_);
|
| + SurfacesServicePtr surfaces_service;
|
| + InterfacePtr<ServiceProvider> surfaces_service_provider;
|
| + vmci->shell()->ConnectToApplication("mojo:mojo_surfaces_service",
|
| + Get(&surfaces_service_provider));
|
| + ConnectToService(surfaces_service_provider.get(), &surfaces_service);
|
| + GpuPtr gpu_service;
|
| + InterfacePtr<ServiceProvider> gpu_service_provider;
|
| + vmci->shell()->ConnectToApplication("mojo:mojo_native_viewport_service",
|
| + Get(&gpu_service_provider));
|
| + ConnectToService(gpu_service_provider.get(), &gpu_service);
|
| + bitmap_uploader_.reset(new BitmapUploader(
|
| + vmci, id_, surfaces_service.Pass(), gpu_service.Pass()));
|
| +}
|
| +
|
| } // namespace mojo
|
|
|