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

Unified Diff: mojo/services/native_viewport/native_viewport_service.cc

Issue 265793015: Mojo: Replace RemotePtr with InterfacePtr and InterfaceImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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/native_viewport/native_viewport_service.cc
diff --git a/mojo/services/native_viewport/native_viewport_service.cc b/mojo/services/native_viewport/native_viewport_service.cc
index 9585ae7da0fcc8d3ccda4e6b00ca97a9fb25c6b8..faba57876f497c2be035bc5f85166834f9ca244d 100644
--- a/mojo/services/native_viewport/native_viewport_service.cc
+++ b/mojo/services/native_viewport/native_viewport_service.cc
@@ -34,7 +34,8 @@ class NativeViewportImpl
public NativeViewportDelegate {
public:
NativeViewportImpl()
- : widget_(gfx::kNullAcceleratedWidget),
+ : client_(NULL),
+ widget_(gfx::kNullAcceleratedWidget),
waiting_for_event_ack_(false) {}
virtual ~NativeViewportImpl() {
// Destroy the NativeViewport early on as it may call us back during
@@ -42,11 +43,15 @@ class NativeViewportImpl
native_viewport_.reset();
}
+ virtual void SetClient(NativeViewportClient* client) OVERRIDE {
+ client_ = client;
+ }
+
virtual void Create(const Rect& bounds) OVERRIDE {
native_viewport_ =
services::NativeViewport::Create(context(), this);
native_viewport_->Init(bounds);
- client()->OnCreated();
+ client_->OnCreated();
OnBoundsChanged(bounds);
}
@@ -72,17 +77,13 @@ class NativeViewportImpl
virtual void CreateGLES2Context(ScopedMessagePipeHandle client_handle)
OVERRIDE {
- if (command_buffer_ || command_buffer_handle_.is_valid()) {
+ if (command_buffer_.get() || command_buffer_handle_.is_valid()) {
LOG(ERROR) << "Can't create multiple contexts on a NativeViewport";
return;
}
- // TODO(darin):
- // CreateGLES2Context should accept a ScopedCommandBufferClientHandle once
- // it is possible to import interface definitions from another module. For
- // now, we just kludge it.
- command_buffer_handle_.reset(
- InterfaceHandle<CommandBufferClient>(client_handle.release().value()));
+ // TODO(darin): CreateGLES2Context should accept a |CommandBufferPtr*|.
+ command_buffer_handle_ = client_handle.Pass();
CreateCommandBufferIfNeeded();
}
@@ -100,8 +101,9 @@ class NativeViewportImpl
gfx::Size size = native_viewport_->GetSize();
if (size.IsEmpty())
return;
- command_buffer_.reset(new CommandBufferImpl(
- command_buffer_handle_.Pass(), widget_, native_viewport_->GetSize()));
+ command_buffer_.reset(
+ BindToPipe(new CommandBufferImpl(widget_, native_viewport_->GetSize()),
+ command_buffer_handle_.Pass()));
}
virtual bool OnEvent(ui::Event* ui_event) OVERRIDE {
@@ -151,9 +153,9 @@ class NativeViewportImpl
event.set_key_data(key_data.Finish());
}
- client()->OnEvent(event.Finish(),
- base::Bind(&NativeViewportImpl::AckEvent,
- base::Unretained(this)));
+ client_->OnEvent(event.Finish(),
+ base::Bind(&NativeViewportImpl::AckEvent,
+ base::Unretained(this)));
waiting_for_event_ack_ = true;
return false;
}
@@ -167,19 +169,20 @@ class NativeViewportImpl
virtual void OnBoundsChanged(const gfx::Rect& bounds) OVERRIDE {
CreateCommandBufferIfNeeded();
AllocationScope scope;
- client()->OnBoundsChanged(bounds);
+ client_->OnBoundsChanged(bounds);
}
virtual void OnDestroyed() OVERRIDE {
command_buffer_.reset();
- client()->OnDestroyed();
+ client_->OnDestroyed();
base::MessageLoop::current()->Quit();
}
private:
+ NativeViewportClient* client_;
gfx::AcceleratedWidget widget_;
scoped_ptr<services::NativeViewport> native_viewport_;
- ScopedCommandBufferClientHandle command_buffer_handle_;
+ ScopedMessagePipeHandle command_buffer_handle_;
scoped_ptr<CommandBufferImpl> command_buffer_;
bool waiting_for_event_ack_;
};
@@ -190,7 +193,7 @@ class NativeViewportImpl
MOJO_NATIVE_VIEWPORT_EXPORT mojo::Application*
CreateNativeViewportService(mojo::shell::Context* context,
- mojo::ScopedShellHandle shell_handle) {
+ mojo::ScopedMessagePipeHandle shell_handle) {
mojo::Application* app = new mojo::Application(shell_handle.Pass());
app->AddServiceConnector(
new mojo::ServiceConnector<mojo::services::NativeViewportImpl,

Powered by Google App Engine
This is Rietveld 408576698