Index: remoting/host/basic_desktop_environment.cc |
diff --git a/remoting/host/basic_desktop_environment.cc b/remoting/host/basic_desktop_environment.cc |
index b65018e8bc82ae6093037a805425b0014aaf193b..cdaadf04dce153a2f601b5a0e39b57996883256c 100644 |
--- a/remoting/host/basic_desktop_environment.cc |
+++ b/remoting/host/basic_desktop_environment.cc |
@@ -10,7 +10,9 @@ |
#include "build/build_config.h" |
#include "remoting/host/audio_capturer.h" |
#include "remoting/host/client_session_control.h" |
+#include "remoting/host/desktop_capturer_proxy.h" |
#include "remoting/host/input_injector.h" |
+#include "remoting/host/mouse_cursor_monitor_proxy.h" |
#include "remoting/host/screen_controls.h" |
#include "remoting/host/security_key/gnubby_auth_handler.h" |
#include "remoting/protocol/capability_names.h" |
@@ -52,12 +54,16 @@ scoped_ptr<ScreenControls> BasicDesktopEnvironment::CreateScreenControls() { |
scoped_ptr<webrtc::MouseCursorMonitor> |
BasicDesktopEnvironment::CreateMouseCursorMonitor() { |
+ scoped_ptr<webrtc::MouseCursorMonitor> cursor_monitor; |
+ |
#if defined(OS_CHROMEOS) |
- return make_scoped_ptr(new MouseCursorMonitorAura()); |
+ cursor_monitor.reset(new MouseCursorMonitorAura()); |
#else |
- return make_scoped_ptr(webrtc::MouseCursorMonitor::CreateForScreen( |
+ cursor_monitor.reset(webrtc::MouseCursorMonitor::CreateForScreen( |
*desktop_capture_options_, webrtc::kFullDesktopScreenId)); |
#endif |
+ return make_scoped_ptr(new MouseCursorMonitorProxy( |
+ video_capture_task_runner_, std::move(cursor_monitor))); |
} |
std::string BasicDesktopEnvironment::GetCapabilities() const { |
@@ -79,27 +85,30 @@ scoped_ptr<webrtc::DesktopCapturer> |
BasicDesktopEnvironment::CreateVideoCapturer() { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
+ scoped_ptr<webrtc::DesktopCapturer> capturer; |
+ |
#if defined(OS_CHROMEOS) |
- return scoped_ptr<webrtc::DesktopCapturer>(new AuraDesktopCapturer()); |
+ capturer.reset(new AuraDesktopCapturer()); |
#else // !defined(OS_CHROMEOS) |
- // The basic desktop environment does not use X DAMAGE, since it is |
- // broken on many systems - see http://crbug.com/73423. |
- return make_scoped_ptr( |
- webrtc::ScreenCapturer::Create(*desktop_capture_options_)); |
+ capturer.reset(webrtc::ScreenCapturer::Create(*desktop_capture_options_)); |
#endif // !defined(OS_CHROMEOS) |
+ |
+ return make_scoped_ptr(new DesktopCapturerProxy(video_capture_task_runner_, |
+ std::move(capturer))); |
} |
BasicDesktopEnvironment::BasicDesktopEnvironment( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
+ scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
bool supports_touch_events) |
: caller_task_runner_(caller_task_runner), |
+ video_capture_task_runner_(video_capture_task_runner), |
input_task_runner_(input_task_runner), |
ui_task_runner_(ui_task_runner), |
- desktop_capture_options_( |
- new webrtc::DesktopCaptureOptions( |
- webrtc::DesktopCaptureOptions::CreateDefault())), |
+ desktop_capture_options_(new webrtc::DesktopCaptureOptions( |
+ webrtc::DesktopCaptureOptions::CreateDefault())), |
supports_touch_events_(supports_touch_events) { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
#if defined(USE_X11) |
@@ -109,16 +118,16 @@ BasicDesktopEnvironment::BasicDesktopEnvironment( |
BasicDesktopEnvironmentFactory::BasicDesktopEnvironmentFactory( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
+ scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) |
: caller_task_runner_(caller_task_runner), |
+ video_capture_task_runner_(video_capture_task_runner), |
input_task_runner_(input_task_runner), |
ui_task_runner_(ui_task_runner), |
- supports_touch_events_(false) { |
-} |
+ supports_touch_events_(false) {} |
-BasicDesktopEnvironmentFactory::~BasicDesktopEnvironmentFactory() { |
-} |
+BasicDesktopEnvironmentFactory::~BasicDesktopEnvironmentFactory() {} |
bool BasicDesktopEnvironmentFactory::SupportsAudioCapture() const { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |