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

Side by Side Diff: components/arc/arc_bridge_service.cc

Issue 1451353002: Implement GpuArcVideoService for arc video accelerator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use GpuProcessHost instead of GpuChannelHost 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/arc/arc_bridge_service.h" 5 #include "components/arc/arc_bridge_service.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/prefs/pref_registry_simple.h" 9 #include "base/prefs/pref_registry_simple.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 base::ScopedFD fd) { 127 base::ScopedFD fd) {
128 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 128 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
129 if (state_ != State::READY) { 129 if (state_ != State::READY) {
130 LOG(ERROR) << "Called RegisterInputDevice when the service is not ready"; 130 LOG(ERROR) << "Called RegisterInputDevice when the service is not ready";
131 return false; 131 return false;
132 } 132 }
133 return ipc_channel_->Send(new ArcInstanceMsg_RegisterInputDevice( 133 return ipc_channel_->Send(new ArcInstanceMsg_RegisterInputDevice(
134 name, device_type, base::FileDescriptor(fd.Pass()))); 134 name, device_type, base::FileDescriptor(fd.Pass())));
135 } 135 }
136 136
137 bool ArcBridgeService::NotifyVideoAcceleratorConnectionCreated(
138 IPC::ChannelHandle handle) {
139 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
140 if (state_ != State::READY) {
141 LOG(ERROR) << "Called NotifyVideoAcceleratorConnectionCreated when the "
142 "service is not ready";
143 return false;
144 }
145 return ipc_channel_->Send(
146 new ArcInstanceMsg_NotifyVideoAcceleratorConnecitonCreated(handle));
147 }
148
137 void ArcBridgeService::SocketConnect(const base::FilePath& socket_path) { 149 void ArcBridgeService::SocketConnect(const base::FilePath& socket_path) {
138 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 150 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
139 if (state_ != State::STOPPED) { 151 if (state_ != State::STOPPED) {
140 VLOG(1) << "SocketConnect() called when instance is not stopped"; 152 VLOG(1) << "SocketConnect() called when instance is not stopped";
141 return; 153 return;
142 } 154 }
143 SetState(State::CONNECTING); 155 SetState(State::CONNECTING);
144 base::PostTaskAndReplyWithResult( 156 base::PostTaskAndReplyWithResult(
145 file_task_runner_.get(), FROM_HERE, 157 file_task_runner_.get(), FROM_HERE,
146 base::Bind(&base::CreateDirectory, socket_path.DirName()), 158 base::Bind(&base::CreateDirectory, socket_path.DirName()),
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 245
234 void ArcBridgeService::OnInstanceReady() { 246 void ArcBridgeService::OnInstanceReady() {
235 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 247 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
236 if (state_ != State::STARTING) { 248 if (state_ != State::STARTING) {
237 VLOG(1) << "StopInstance() called while connecting"; 249 VLOG(1) << "StopInstance() called while connecting";
238 return; 250 return;
239 } 251 }
240 SetState(State::READY); 252 SetState(State::READY);
241 } 253 }
242 254
255 void ArcBridgeService::OnCreateArcVideoAcceleratorConnection() {
256 FOR_EACH_OBSERVER(Observer, observer_list_,
257 OnCreateArcVideoAcceleratorConnection());
258 }
259
243 void ArcBridgeService::SetState(State state) { 260 void ArcBridgeService::SetState(State state) {
244 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 261 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
245 // DCHECK on enum classes not supported. 262 // DCHECK on enum classes not supported.
246 DCHECK(state_ != state); 263 DCHECK(state_ != state);
247 state_ = state; 264 state_ = state;
248 FOR_EACH_OBSERVER(Observer, observer_list_, OnStateChanged(state_)); 265 FOR_EACH_OBSERVER(Observer, observer_list_, OnStateChanged(state_));
249 } 266 }
250 267
251 bool ArcBridgeService::OnMessageReceived(const IPC::Message& message) { 268 bool ArcBridgeService::OnMessageReceived(const IPC::Message& message) {
252 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 269 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
253 bool handled = true; 270 bool handled = true;
254 271
255 IPC_BEGIN_MESSAGE_MAP(ArcBridgeService, message) 272 IPC_BEGIN_MESSAGE_MAP(ArcBridgeService, message)
256 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceReady, OnInstanceReady) 273 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceReady, OnInstanceReady)
274 IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_CreateArcVideoAcceleratorConnection,
275 OnCreateArcVideoAcceleratorConnection)
257 IPC_MESSAGE_UNHANDLED(handled = false) 276 IPC_MESSAGE_UNHANDLED(handled = false)
258 IPC_END_MESSAGE_MAP() 277 IPC_END_MESSAGE_MAP()
259 278
260 if (!handled) 279 if (!handled)
261 LOG(ERROR) << "Invalid message with type = " << message.type(); 280 LOG(ERROR) << "Invalid message with type = " << message.type();
262 return handled; 281 return handled;
263 } 282 }
264 283
265 void ArcBridgeService::OnArcAvailable(bool available) { 284 void ArcBridgeService::OnArcAvailable(bool available) {
266 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 285 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
267 if (available_ == available) 286 if (available_ == available)
268 return; 287 return;
269 available_ = available; 288 available_ = available;
270 FOR_EACH_OBSERVER(Observer, observer_list_, OnAvailableChanged(available_)); 289 FOR_EACH_OBSERVER(Observer, observer_list_, OnAvailableChanged(available_));
271 PrerequisitesChanged(); 290 PrerequisitesChanged();
272 } 291 }
273 292
274 void ArcBridgeService::OnInstanceStopped(bool success) { 293 void ArcBridgeService::OnInstanceStopped(bool success) {
275 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 294 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread());
276 // STOPPING is the only valid state for this function. 295 // STOPPING is the only valid state for this function.
277 // DCHECK on enum classes not supported. 296 // DCHECK on enum classes not supported.
278 DCHECK(state_ == State::STOPPING); 297 DCHECK(state_ == State::STOPPING);
279 ipc_channel_.reset(); 298 ipc_channel_.reset();
280 SetState(State::STOPPED); 299 SetState(State::STOPPED);
281 } 300 }
282 301
283 } // namespace arc 302 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698