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

Unified Diff: remoting/host/desktop_session_agent.cc

Issue 1673723002: Use IpcVideoFrameCapturer on network thread instead of capturer thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months 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
« no previous file with comments | « remoting/host/desktop_session_agent.h ('k') | remoting/host/desktop_session_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/desktop_session_agent.cc
diff --git a/remoting/host/desktop_session_agent.cc b/remoting/host/desktop_session_agent.cc
index d8ac3e7ab2e7bd8b687e3356a4f23b2695ed1d8e..ed594d4dfcb94518d83776f26aba69916f1384fa 100644
--- a/remoting/host/desktop_session_agent.cc
+++ b/remoting/host/desktop_session_agent.cc
@@ -158,13 +158,11 @@ DesktopSessionAgent::DesktopSessionAgent(
scoped_refptr<AutoThreadTaskRunner> audio_capture_task_runner,
scoped_refptr<AutoThreadTaskRunner> caller_task_runner,
scoped_refptr<AutoThreadTaskRunner> input_task_runner,
- scoped_refptr<AutoThreadTaskRunner> io_task_runner,
- scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner)
+ scoped_refptr<AutoThreadTaskRunner> io_task_runner)
: audio_capture_task_runner_(audio_capture_task_runner),
caller_task_runner_(caller_task_runner),
input_task_runner_(input_task_runner),
io_task_runner_(io_task_runner),
- video_capture_task_runner_(video_capture_task_runner),
weak_factory_(this) {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
}
@@ -315,14 +313,16 @@ void DesktopSessionAgent::OnStartSessionAgent(
// Start the video capturer and mouse cursor monitor.
video_capturer_ = desktop_environment_->CreateVideoCapturer();
+ video_capturer_->Start(this);
+ video_capturer_->SetSharedMemoryFactory(
+ rtc_make_scoped_ptr(new SharedMemoryFactoryImpl(
+ base::Bind(&DesktopSessionAgent::SendToNetwork, this))));
mouse_cursor_monitor_ = desktop_environment_->CreateMouseCursorMonitor();
- video_capture_task_runner_->PostTask(
- FROM_HERE, base::Bind(
- &DesktopSessionAgent::StartVideoCapturerAndMouseMonitor, this));
+ mouse_cursor_monitor_->Init(this, webrtc::MouseCursorMonitor::SHAPE_ONLY);
}
void DesktopSessionAgent::OnCaptureCompleted(webrtc::DesktopFrame* frame) {
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
+ DCHECK(caller_task_runner_->BelongsToCurrentThread());
last_frame_.reset(frame);
@@ -345,7 +345,7 @@ void DesktopSessionAgent::OnCaptureCompleted(webrtc::DesktopFrame* frame) {
}
void DesktopSessionAgent::OnMouseCursor(webrtc::MouseCursor* cursor) {
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
+ DCHECK(caller_task_runner_->BelongsToCurrentThread());
scoped_ptr<webrtc::MouseCursor> owned_cursor(cursor);
@@ -440,19 +440,14 @@ void DesktopSessionAgent::Stop() {
FROM_HERE, base::Bind(&DesktopSessionAgent::StopAudioCapturer, this));
// Stop the video capturer.
- video_capture_task_runner_->PostTask(
- FROM_HERE, base::Bind(
- &DesktopSessionAgent::StopVideoCapturerAndMouseMonitor, this));
+ video_capturer_.reset();
+ last_frame_.reset();
+ mouse_cursor_monitor_.reset();
}
}
void DesktopSessionAgent::OnCaptureFrame() {
- if (!video_capture_task_runner_->BelongsToCurrentThread()) {
- video_capture_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&DesktopSessionAgent::OnCaptureFrame, this));
- return;
- }
+ DCHECK(caller_task_runner_->BelongsToCurrentThread());
mouse_cursor_monitor_->Capture();
@@ -583,27 +578,4 @@ void DesktopSessionAgent::StopAudioCapturer() {
audio_capturer_.reset();
}
-void DesktopSessionAgent::StartVideoCapturerAndMouseMonitor() {
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
-
- if (video_capturer_) {
- video_capturer_->Start(this);
- video_capturer_->SetSharedMemoryFactory(
- rtc_make_scoped_ptr(new SharedMemoryFactoryImpl(
- base::Bind(&DesktopSessionAgent::SendToNetwork, this))));
- }
-
- if (mouse_cursor_monitor_) {
- mouse_cursor_monitor_->Init(this, webrtc::MouseCursorMonitor::SHAPE_ONLY);
- }
-}
-
-void DesktopSessionAgent::StopVideoCapturerAndMouseMonitor() {
- DCHECK(video_capture_task_runner_->BelongsToCurrentThread());
-
- video_capturer_.reset();
- last_frame_.reset();
- mouse_cursor_monitor_.reset();
-}
-
} // namespace remoting
« no previous file with comments | « remoting/host/desktop_session_agent.h ('k') | remoting/host/desktop_session_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698