Index: remoting/host/desktop_session_proxy.cc |
diff --git a/remoting/host/desktop_session_proxy.cc b/remoting/host/desktop_session_proxy.cc |
index a7bfdba3aeb09369bb2ee486a10d63a3f5d65c62..4dbe6392b058a2624f9ab1068527c444e099f193 100644 |
--- a/remoting/host/desktop_session_proxy.cc |
+++ b/remoting/host/desktop_session_proxy.cc |
@@ -90,7 +90,6 @@ DesktopSessionProxy::DesktopSessionProxy( |
scoped_refptr<base::SingleThreadTaskRunner> audio_capture_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner, |
base::WeakPtr<ClientSessionControl> client_session_control, |
base::WeakPtr<DesktopSessionConnector> desktop_session_connector, |
bool virtual_terminal, |
@@ -98,7 +97,6 @@ DesktopSessionProxy::DesktopSessionProxy( |
: audio_capture_task_runner_(audio_capture_task_runner), |
caller_task_runner_(caller_task_runner), |
io_task_runner_(io_task_runner), |
- video_capture_task_runner_(video_capture_task_runner), |
client_session_control_(client_session_control), |
desktop_session_connector_(desktop_session_connector), |
pending_capture_frame_requests_(0), |
@@ -276,7 +274,7 @@ void DesktopSessionProxy::DetachFromDesktop() { |
// Generate fake responses to keep the video capturer in sync. |
while (pending_capture_frame_requests_) { |
--pending_capture_frame_requests_; |
- PostCaptureCompleted(nullptr); |
+ video_capturer_->OnCaptureCompleted(nullptr); |
} |
} |
@@ -288,30 +286,26 @@ void DesktopSessionProxy::SetAudioCapturer( |
} |
void DesktopSessionProxy::CaptureFrame() { |
- if (!caller_task_runner_->BelongsToCurrentThread()) { |
- caller_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&DesktopSessionProxy::CaptureFrame, this)); |
- return; |
- } |
+ DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
if (desktop_channel_) { |
++pending_capture_frame_requests_; |
SendToDesktop(new ChromotingNetworkDesktopMsg_CaptureFrame()); |
} else { |
- PostCaptureCompleted(nullptr); |
+ video_capturer_->OnCaptureCompleted(nullptr); |
} |
} |
void DesktopSessionProxy::SetVideoCapturer( |
const base::WeakPtr<IpcVideoFrameCapturer> video_capturer) { |
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread()); |
+ DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
video_capturer_ = video_capturer; |
} |
void DesktopSessionProxy::SetMouseCursorMonitor( |
const base::WeakPtr<IpcMouseCursorMonitor>& mouse_cursor_monitor) { |
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread()); |
+ DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
mouse_cursor_monitor_ = mouse_cursor_monitor; |
} |
@@ -507,13 +501,17 @@ void DesktopSessionProxy::OnCaptureCompleted( |
} |
--pending_capture_frame_requests_; |
- PostCaptureCompleted(std::move(frame)); |
+ video_capturer_->OnCaptureCompleted(std::move(frame)); |
} |
void DesktopSessionProxy::OnMouseCursor( |
const webrtc::MouseCursor& mouse_cursor) { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
- PostMouseCursor(make_scoped_ptr(webrtc::MouseCursor::CopyOf(mouse_cursor))); |
+ |
+ if (mouse_cursor_monitor_) { |
+ mouse_cursor_monitor_->OnMouseCursor( |
+ make_scoped_ptr(webrtc::MouseCursor::CopyOf(mouse_cursor))); |
+ } |
} |
void DesktopSessionProxy::OnInjectClipboardEvent( |
@@ -531,26 +529,6 @@ void DesktopSessionProxy::OnInjectClipboardEvent( |
} |
} |
-void DesktopSessionProxy::PostCaptureCompleted( |
- scoped_ptr<webrtc::DesktopFrame> frame) { |
- DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
- |
- video_capture_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&IpcVideoFrameCapturer::OnCaptureCompleted, video_capturer_, |
- base::Passed(&frame))); |
-} |
- |
-void DesktopSessionProxy::PostMouseCursor( |
- scoped_ptr<webrtc::MouseCursor> mouse_cursor) { |
- DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
- |
- video_capture_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&IpcMouseCursorMonitor::OnMouseCursor, mouse_cursor_monitor_, |
- base::Passed(&mouse_cursor))); |
-} |
- |
void DesktopSessionProxy::SendToDesktop(IPC::Message* message) { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |