OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "remoting/host/desktop_session_proxy.h" | 5 #include "remoting/host/desktop_session_proxy.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/process/process_handle.h" | 9 #include "base/process/process_handle.h" |
10 #include "base/memory/shared_memory.h" | 10 #include "base/memory/shared_memory.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 size_t size) | 47 size_t size) |
48 : id_(id), | 48 : id_(id), |
49 #if defined(OS_WIN) | 49 #if defined(OS_WIN) |
50 shared_memory_(handle, kReadOnly, process), | 50 shared_memory_(handle, kReadOnly, process), |
51 #else // !defined(OS_WIN) | 51 #else // !defined(OS_WIN) |
52 shared_memory_(handle, kReadOnly), | 52 shared_memory_(handle, kReadOnly), |
53 #endif // !defined(OS_WIN) | 53 #endif // !defined(OS_WIN) |
54 size_(size) { | 54 size_(size) { |
55 if (!shared_memory_.Map(size)) { | 55 if (!shared_memory_.Map(size)) { |
56 LOG(ERROR) << "Failed to map a shared buffer: id=" << id | 56 LOG(ERROR) << "Failed to map a shared buffer: id=" << id |
57 #if defined(OS_WIN) | |
58 << ", handle=" << handle.GetHandle() | |
59 #else | |
60 << ", handle.fd=" | |
61 << base::SharedMemory::GetFdFromSharedMemoryHandle(handle) | |
62 #endif | |
63 << ", size=" << size; | 57 << ", size=" << size; |
64 } | 58 } |
65 } | 59 } |
66 | 60 |
67 int id() { return id_; } | 61 int id() { return id_; } |
68 size_t size() { return size_; } | 62 size_t size() { return size_; } |
69 void* memory() { return shared_memory_.memory(); } | 63 void* memory() { return shared_memory_.memory(); } |
70 | 64 |
71 private: | 65 private: |
72 virtual ~IpcSharedBufferCore() {} | 66 virtual ~IpcSharedBufferCore() {} |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 } | 457 } |
464 | 458 |
465 // Pass a captured audio packet to |audio_capturer_|. | 459 // Pass a captured audio packet to |audio_capturer_|. |
466 audio_capture_task_runner_->PostTask( | 460 audio_capture_task_runner_->PostTask( |
467 FROM_HERE, base::Bind(&IpcAudioCapturer::OnAudioPacket, audio_capturer_, | 461 FROM_HERE, base::Bind(&IpcAudioCapturer::OnAudioPacket, audio_capturer_, |
468 base::Passed(&packet))); | 462 base::Passed(&packet))); |
469 } | 463 } |
470 | 464 |
471 void DesktopSessionProxy::OnCreateSharedBuffer( | 465 void DesktopSessionProxy::OnCreateSharedBuffer( |
472 int id, | 466 int id, |
473 IPC::PlatformFileForTransit handle, | 467 base::SharedMemoryHandle handle, |
474 uint32 size) { | 468 uint32 size) { |
475 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 469 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
476 | 470 |
477 #if defined(OS_WIN) | |
478 base::SharedMemoryHandle shm_handle = | |
479 base::SharedMemoryHandle(handle, base::GetCurrentProcId()); | |
480 #else | |
481 base::SharedMemoryHandle shm_handle = base::SharedMemoryHandle(handle); | |
482 #endif | |
483 scoped_refptr<IpcSharedBufferCore> shared_buffer = | 471 scoped_refptr<IpcSharedBufferCore> shared_buffer = |
484 new IpcSharedBufferCore(id, shm_handle, desktop_process_.Handle(), size); | 472 new IpcSharedBufferCore(id, handle, desktop_process_.Handle(), size); |
485 | 473 |
486 if (shared_buffer->memory() != nullptr && | 474 if (shared_buffer->memory() != nullptr && |
487 !shared_buffers_.insert(std::make_pair(id, shared_buffer)).second) { | 475 !shared_buffers_.insert(std::make_pair(id, shared_buffer)).second) { |
488 LOG(ERROR) << "Duplicate shared buffer id " << id << " encountered"; | 476 LOG(ERROR) << "Duplicate shared buffer id " << id << " encountered"; |
489 } | 477 } |
490 } | 478 } |
491 | 479 |
492 void DesktopSessionProxy::OnReleaseSharedBuffer(int id) { | 480 void DesktopSessionProxy::OnReleaseSharedBuffer(int id) { |
493 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 481 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
494 | 482 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 } | 561 } |
574 | 562 |
575 // static | 563 // static |
576 void DesktopSessionProxyTraits::Destruct( | 564 void DesktopSessionProxyTraits::Destruct( |
577 const DesktopSessionProxy* desktop_session_proxy) { | 565 const DesktopSessionProxy* desktop_session_proxy) { |
578 desktop_session_proxy->caller_task_runner_->DeleteSoon(FROM_HERE, | 566 desktop_session_proxy->caller_task_runner_->DeleteSoon(FROM_HERE, |
579 desktop_session_proxy); | 567 desktop_session_proxy); |
580 } | 568 } |
581 | 569 |
582 } // namespace remoting | 570 } // namespace remoting |
OLD | NEW |