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

Unified Diff: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc

Issue 555953007: Fixes for surfaces bindings exposed by wm_flow app (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
index aaadf8aabf3e10ecf9352e277f6240da5de30db5..79dbb069d13ae287ca64599ceb2d804726c49727 100644
--- a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
+++ b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
@@ -97,29 +97,6 @@ class RootObserver : public ViewObserver {
DISALLOW_COPY_AND_ASSIGN(RootObserver);
};
-bool CreateMapAndDupSharedBuffer(size_t size,
- void** memory,
- ScopedSharedBufferHandle* handle,
- ScopedSharedBufferHandle* duped) {
- MojoResult result = CreateSharedBuffer(NULL, size, handle);
- if (result != MOJO_RESULT_OK)
- return false;
- DCHECK(handle->is_valid());
-
- result = DuplicateBuffer(handle->get(), NULL, duped);
- if (result != MOJO_RESULT_OK)
- return false;
- DCHECK(duped->is_valid());
-
- result = MapBuffer(
- handle->get(), 0, size, memory, MOJO_MAP_BUFFER_FLAG_NONE);
- if (result != MOJO_RESULT_OK)
- return false;
- DCHECK(*memory);
-
- return true;
-}
-
ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate,
Shell* shell)
: connected_(false),
@@ -159,6 +136,12 @@ ViewManagerClientImpl::~ViewManagerClientImpl() {
// NOTE: we manually delete as we're a friend.
for (size_t i = 0; i < non_owned.size(); ++i)
delete non_owned[i];
+
+ for (BitmapUploaderMap::iterator it = bitmap_uploaders_.begin();
+ it != bitmap_uploaders_.end();
+ ++it) {
+ delete it->second;
Ben Goodger (Google) 2014/09/13 01:22:22 rather than track this here, do you think it makes
+ }
delegate_->OnViewManagerDisconnected(this);
}
@@ -214,27 +197,12 @@ void ViewManagerClientImpl::SetSurfaceId(Id view_id, SurfaceIdPtr surface_id) {
void ViewManagerClientImpl::SetViewContents(Id view_id,
const SkBitmap& contents) {
DCHECK(connected_);
- if (!bitmap_uploader_) {
- SurfacesServicePtr surfaces_service;
- InterfacePtr<ServiceProvider> surfaces_service_provider;
- 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;
- shell_->ConnectToApplication("mojo:mojo_native_viewport_service",
- Get(&gpu_service_provider));
- ConnectToService(gpu_service_provider.get(), &gpu_service);
- bitmap_uploader_.reset(
- new BitmapUploader(surfaces_service.Pass(), gpu_service.Pass()));
- }
- bitmap_uploader_->Upload(
- contents,
- base::Bind(&ViewManagerClientImpl::SetSurfaceId,
- // We'll destroy the bitmap_uploader before we are destroyed,
- // so we can use an unretained pointer here.
- base::Unretained(this),
- view_id));
+ BitmapUploaderForView(view_id)->SetBitmap(contents);
+}
+
+void ViewManagerClientImpl::SetViewColor(Id view_id, SkColor color) {
+ DCHECK(connected_);
+ BitmapUploaderForView(view_id)->SetColor(color);
}
void ViewManagerClientImpl::SetFocus(Id view_id) {
@@ -472,4 +440,27 @@ base::Callback<void(ErrorCode)>
base::Unretained(this));
}
+BitmapUploader* ViewManagerClientImpl::BitmapUploaderForView(Id view_id) {
+ BitmapUploader* uploader = bitmap_uploaders_[view_id];
+ if (!uploader) {
+ SurfacesServicePtr surfaces_service;
+ InterfacePtr<ServiceProvider> surfaces_service_provider;
+ 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;
+ shell_->ConnectToApplication("mojo:mojo_native_viewport_service",
+ Get(&gpu_service_provider));
+ ConnectToService(gpu_service_provider.get(), &gpu_service);
+ uploader = new BitmapUploader(
+ this, view_id, surfaces_service.Pass(), gpu_service.Pass());
+
+ bitmap_uploaders_[view_id] = uploader;
+ }
+ View* view = GetViewById(view_id);
+ uploader->SetSize(view->bounds().size());
+ return uploader;
+}
+
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698