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

Unified Diff: components/arc/arc_bridge_service_impl.cc

Issue 1451353002: Implement GpuArcVideoService for arc video accelerator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 5 years 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/arc/arc_bridge_service_impl.cc
diff --git a/components/arc/arc_bridge_service_impl.cc b/components/arc/arc_bridge_service_impl.cc
index d5485b4d41f62c8b0abb9cb889e46a407c0a9455..4a54769797c46a24d928a85426a1d919d93129e0 100644
--- a/components/arc/arc_bridge_service_impl.cc
+++ b/components/arc/arc_bridge_service_impl.cc
@@ -17,6 +17,7 @@
#include "chromeos/dbus/dbus_method_call_status.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/session_manager_client.h"
+#include "ipc/ipc_channel_handle.h"
#include "mojo/public/cpp/bindings/array.h"
#include "third_party/mojo/src/mojo/edk/embedder/embedder.h"
@@ -179,6 +180,29 @@ bool ArcBridgeServiceImpl::RequestProcessList() {
return true;
}
+void ArcBridgeServiceImpl::NotifyVideoAcceleratorChannelCreated(
+ const IPC::ChannelHandle& handle) {
+ DCHECK(CalledOnValidThread());
+ if (state() != State::READY) {
+ LOG(ERROR) << "Called NotifyVideoAcceleratorChannelCreated when the "
+ "service is not ready";
+ return;
+ }
+ // TODO revisit before commit:
+ // can mojo create wrapper for invalid handle?
+ MojoHandle wrapped_handle;
+ MojoResult wrap_result = mojo::embedder::CreatePlatformHandleWrapper(
+ mojo::embedder::ScopedPlatformHandle(
+ mojo::embedder::PlatformHandle(handle.socket.fd)),
+ &wrapped_handle);
+ if (wrap_result != MOJO_RESULT_OK) {
+ LOG(WARNING) << "Pipe failed to wrap handles. Closing: " << wrap_result;
+ return;
+ }
+ instance_ptr_->NotifyVideoAcceleratorChannelCreated(
+ mojo::ScopedHandle(mojo::Handle(wrapped_handle)));
+}
+
void ArcBridgeServiceImpl::OnInstanceBootPhase(InstanceBootPhase phase) {
DCHECK(CalledOnValidThread());
// The state can be CONNECTED the first time this is called, and will then
@@ -245,6 +269,16 @@ void ArcBridgeServiceImpl::OnReleaseDisplayWakeLock(DisplayWakeLockType type) {
VLOG(1) << "OnReleaseDisplayWakeLock";
}
+void ArcBridgeServiceImpl::OnRequestArcVideoAcceleratorChannel() {
+ DCHECK(CalledOnValidThread());
+ if (!video_service()) {
+ LOG(ERROR) << "Got OnRequestArcVideoAcceleratorChannel"
+ " but video service is not registered";
+ return;
+ }
+ video_service()->OnRequestArcVideoAcceleratorChannel();
+}
+
void ArcBridgeServiceImpl::OnArcAvailable(bool arc_available) {
DCHECK(CalledOnValidThread());
if (available() == arc_available)

Powered by Google App Engine
This is Rietveld 408576698