| Index: remoting/host/desktop_session_proxy.cc
|
| diff --git a/remoting/host/desktop_session_proxy.cc b/remoting/host/desktop_session_proxy.cc
|
| index 058a2f46a6be24cc6757f0ef96ae721105fd1bc7..a3e235d3c04b2c2e783ee8182fcd048530703c4d 100644
|
| --- a/remoting/host/desktop_session_proxy.cc
|
| +++ b/remoting/host/desktop_session_proxy.cc
|
| @@ -19,6 +19,7 @@
|
| #include "remoting/host/desktop_session_connector.h"
|
| #include "remoting/host/ipc_audio_capturer.h"
|
| #include "remoting/host/ipc_input_injector.h"
|
| +#include "remoting/host/ipc_mouse_cursor_monitor.h"
|
| #include "remoting/host/ipc_screen_controls.h"
|
| #include "remoting/host/ipc_video_frame_capturer.h"
|
| #include "remoting/proto/audio.pb.h"
|
| @@ -26,6 +27,7 @@
|
| #include "remoting/proto/event.pb.h"
|
| #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
|
| #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
|
| +#include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h"
|
| #include "third_party/webrtc/modules/desktop_capture/shared_memory.h"
|
|
|
| #if defined(OS_WIN)
|
| @@ -144,6 +146,12 @@ scoped_ptr<webrtc::ScreenCapturer> DesktopSessionProxy::CreateVideoCapturer() {
|
| return scoped_ptr<webrtc::ScreenCapturer>(new IpcVideoFrameCapturer(this));
|
| }
|
|
|
| +scoped_ptr<webrtc::MouseCursorMonitor>
|
| + DesktopSessionProxy::CreateMouseCursorMonitor() {
|
| + return scoped_ptr<webrtc::MouseCursorMonitor>(
|
| + new IpcMouseCursorMonitor(this));
|
| +}
|
| +
|
| std::string DesktopSessionProxy::GetCapabilities() const {
|
| std::string result = kRateLimitResizeRequests;
|
| // Ask the client to send its resolution unconditionally.
|
| @@ -183,8 +191,8 @@ bool DesktopSessionProxy::OnMessageReceived(const IPC::Message& message) {
|
| OnAudioPacket)
|
| IPC_MESSAGE_HANDLER(ChromotingDesktopNetworkMsg_CaptureCompleted,
|
| OnCaptureCompleted)
|
| - IPC_MESSAGE_HANDLER(ChromotingDesktopNetworkMsg_CursorShapeChanged,
|
| - OnCursorShapeChanged)
|
| + IPC_MESSAGE_HANDLER(ChromotingDesktopNetworkMsg_MouseCursor,
|
| + OnMouseCursor)
|
| IPC_MESSAGE_HANDLER(ChromotingDesktopNetworkMsg_CreateSharedBuffer,
|
| OnCreateSharedBuffer)
|
| IPC_MESSAGE_HANDLER(ChromotingDesktopNetworkMsg_ReleaseSharedBuffer,
|
| @@ -318,6 +326,13 @@ void DesktopSessionProxy::SetVideoCapturer(
|
| video_capturer_ = video_capturer;
|
| }
|
|
|
| +void DesktopSessionProxy::SetMouseCursorMonitor(
|
| + const base::WeakPtr<IpcMouseCursorMonitor>& mouse_cursor_monitor) {
|
| + DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
|
| +
|
| + mouse_cursor_monitor_ = mouse_cursor_monitor;
|
| +}
|
| +
|
| void DesktopSessionProxy::DisconnectSession() {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
|
|
| @@ -491,11 +506,14 @@ void DesktopSessionProxy::OnCaptureCompleted(
|
| PostCaptureCompleted(frame.Pass());
|
| }
|
|
|
| -void DesktopSessionProxy::OnCursorShapeChanged(
|
| - const webrtc::MouseCursorShape& cursor_shape) {
|
| +void DesktopSessionProxy::OnMouseCursor(
|
| + const scoped_ptr<webrtc::MouseCursor>& mouse_cursor) {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
| - PostCursorShape(scoped_ptr<webrtc::MouseCursorShape>(
|
| - new webrtc::MouseCursorShape(cursor_shape)));
|
| + CHECK(mouse_cursor.get());
|
| +
|
| + scoped_ptr<webrtc::MouseCursor> cursor(
|
| + webrtc::MouseCursor::CopyOf(*mouse_cursor));
|
| + PostMouseCursor(cursor.Pass());
|
| }
|
|
|
| void DesktopSessionProxy::OnInjectClipboardEvent(
|
| @@ -523,14 +541,14 @@ void DesktopSessionProxy::PostCaptureCompleted(
|
| base::Passed(&frame)));
|
| }
|
|
|
| -void DesktopSessionProxy::PostCursorShape(
|
| - scoped_ptr<webrtc::MouseCursorShape> cursor_shape) {
|
| +void DesktopSessionProxy::PostMouseCursor(
|
| + scoped_ptr<webrtc::MouseCursor> mouse_cursor) {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
|
|
| video_capture_task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&IpcVideoFrameCapturer::OnCursorShapeChanged, video_capturer_,
|
| - base::Passed(&cursor_shape)));
|
| + base::Bind(&IpcMouseCursorMonitor::OnMouseCursor, mouse_cursor_monitor_,
|
| + base::Passed(&mouse_cursor)));
|
| }
|
|
|
| void DesktopSessionProxy::SendToDesktop(IPC::Message* message) {
|
|
|