diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-20 17:42:02 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-20 17:43:33 +0000 |
commit | 47b200541aab7b5a72d655d96770ecfda9e14d9b (patch) | |
tree | 11cbb5b23917a3e0c50c54580e11d8784695eb8a /mojo/services/native_viewport/native_viewport_impl.cc | |
parent | 4ec86aa1988f709a009cce3f5bf735acf42e46c0 (diff) | |
download | chromium_src-47b200541aab7b5a72d655d96770ecfda9e14d9b.zip chromium_src-47b200541aab7b5a72d655d96770ecfda9e14d9b.tar.gz chromium_src-47b200541aab7b5a72d655d96770ecfda9e14d9b.tar.bz2 |
Mojo multiple command buffer support and sample
TBR=danakj@chromium.org for DEPS file shuffle that moves a "+ui/gfx"
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=290157
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=290431
Review URL: https://codereview.chromium.org/451753003
Cr-Commit-Position: refs/heads/master@{#290859}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290859 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/services/native_viewport/native_viewport_impl.cc')
-rw-r--r-- | mojo/services/native_viewport/native_viewport_impl.cc | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/mojo/services/native_viewport/native_viewport_impl.cc b/mojo/services/native_viewport/native_viewport_impl.cc index 8755dfd..0b871dc 100644 --- a/mojo/services/native_viewport/native_viewport_impl.cc +++ b/mojo/services/native_viewport/native_viewport_impl.cc @@ -4,6 +4,7 @@ #include "mojo/services/native_viewport/native_viewport_impl.h" +#include "base/bind.h" #include "base/macros.h" #include "base/message_loop/message_loop.h" #include "base/time/time.h" @@ -38,7 +39,6 @@ NativeViewportImpl::~NativeViewportImpl() { void NativeViewportImpl::Create(RectPtr bounds) { platform_viewport_ = PlatformViewport::Create(this); platform_viewport_->Init(bounds.To<gfx::Rect>()); - client()->OnCreated(); OnBoundsChanged(bounds.To<gfx::Rect>()); } @@ -51,7 +51,6 @@ void NativeViewportImpl::Hide() { } void NativeViewportImpl::Close() { - command_buffer_.reset(); DCHECK(platform_viewport_); platform_viewport_->Close(); } @@ -60,25 +59,15 @@ void NativeViewportImpl::SetBounds(RectPtr bounds) { platform_viewport_->SetBounds(bounds.To<gfx::Rect>()); } -void NativeViewportImpl::CreateGLES2Context( - InterfaceRequest<CommandBuffer> command_buffer_request) { - if (command_buffer_ || command_buffer_request_.is_pending()) { - LOG(ERROR) << "Can't create multiple contexts on a NativeViewport"; - return; - } - command_buffer_request_ = command_buffer_request.Pass(); - CreateCommandBufferIfNeeded(); -} - void NativeViewportImpl::OnBoundsChanged(const gfx::Rect& bounds) { - CreateCommandBufferIfNeeded(); client()->OnBoundsChanged(Rect::From(bounds)); } void NativeViewportImpl::OnAcceleratedWidgetAvailable( gfx::AcceleratedWidget widget) { widget_ = widget; - CreateCommandBufferIfNeeded(); + uintptr_t widget_ptr = bit_cast<uintptr_t>(widget); + client()->OnCreated(static_cast<uint64_t>(widget_ptr)); } bool NativeViewportImpl::OnEvent(ui::Event* ui_event) { @@ -108,31 +97,12 @@ bool NativeViewportImpl::OnEvent(ui::Event* ui_event) { } void NativeViewportImpl::OnDestroyed() { - client()->OnDestroyed(base::Bind(&NativeViewportImpl::AckDestroyed, - base::Unretained(this))); + client()->OnDestroyed(); } void NativeViewportImpl::AckEvent() { waiting_for_event_ack_ = false; } -void NativeViewportImpl::CreateCommandBufferIfNeeded() { - if (!command_buffer_request_.is_pending()) - return; - DCHECK(!command_buffer_.get()); - if (widget_ == gfx::kNullAcceleratedWidget) - return; - gfx::Size size = platform_viewport_->GetSize(); - if (size.IsEmpty()) - return; - command_buffer_.reset( - new CommandBufferImpl(widget_, platform_viewport_->GetSize())); - WeakBindToRequest(command_buffer_.get(), &command_buffer_request_); -} - -void NativeViewportImpl::AckDestroyed() { - command_buffer_.reset(); -} - } // namespace mojo |