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

Side by Side Diff: remoting/host/basic_desktop_environment.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 unified diff | Download patch
« no previous file with comments | « remoting/host/basic_desktop_environment.h ('k') | remoting/host/chromoting_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/basic_desktop_environment.h" 5 #include "remoting/host/basic_desktop_environment.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "remoting/host/audio_capturer.h" 11 #include "remoting/host/audio_capturer.h"
12 #include "remoting/host/client_session_control.h" 12 #include "remoting/host/client_session_control.h"
13 #include "remoting/host/desktop_capturer_proxy.h"
13 #include "remoting/host/input_injector.h" 14 #include "remoting/host/input_injector.h"
15 #include "remoting/host/mouse_cursor_monitor_proxy.h"
14 #include "remoting/host/screen_controls.h" 16 #include "remoting/host/screen_controls.h"
15 #include "remoting/host/security_key/gnubby_auth_handler.h" 17 #include "remoting/host/security_key/gnubby_auth_handler.h"
16 #include "remoting/protocol/capability_names.h" 18 #include "remoting/protocol/capability_names.h"
17 #include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h" 19 #include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
18 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h" 20 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h"
19 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h" 21 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
20 22
21 #if defined(OS_CHROMEOS) 23 #if defined(OS_CHROMEOS)
22 #include "remoting/host/chromeos/aura_desktop_capturer.h" 24 #include "remoting/host/chromeos/aura_desktop_capturer.h"
23 #include "remoting/host/chromeos/mouse_cursor_monitor_aura.h" 25 #include "remoting/host/chromeos/mouse_cursor_monitor_aura.h"
(...skipping 21 matching lines...) Expand all
45 } 47 }
46 48
47 scoped_ptr<ScreenControls> BasicDesktopEnvironment::CreateScreenControls() { 49 scoped_ptr<ScreenControls> BasicDesktopEnvironment::CreateScreenControls() {
48 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 50 DCHECK(caller_task_runner_->BelongsToCurrentThread());
49 51
50 return nullptr; 52 return nullptr;
51 } 53 }
52 54
53 scoped_ptr<webrtc::MouseCursorMonitor> 55 scoped_ptr<webrtc::MouseCursorMonitor>
54 BasicDesktopEnvironment::CreateMouseCursorMonitor() { 56 BasicDesktopEnvironment::CreateMouseCursorMonitor() {
57 scoped_ptr<webrtc::MouseCursorMonitor> cursor_monitor;
58
55 #if defined(OS_CHROMEOS) 59 #if defined(OS_CHROMEOS)
56 return make_scoped_ptr(new MouseCursorMonitorAura()); 60 cursor_monitor.reset(new MouseCursorMonitorAura());
57 #else 61 #else
58 return make_scoped_ptr(webrtc::MouseCursorMonitor::CreateForScreen( 62 cursor_monitor.reset(webrtc::MouseCursorMonitor::CreateForScreen(
59 *desktop_capture_options_, webrtc::kFullDesktopScreenId)); 63 *desktop_capture_options_, webrtc::kFullDesktopScreenId));
60 #endif 64 #endif
65 return make_scoped_ptr(new MouseCursorMonitorProxy(
66 video_capture_task_runner_, std::move(cursor_monitor)));
61 } 67 }
62 68
63 std::string BasicDesktopEnvironment::GetCapabilities() const { 69 std::string BasicDesktopEnvironment::GetCapabilities() const {
64 if (supports_touch_events_) 70 if (supports_touch_events_)
65 return protocol::kTouchEventsCapability; 71 return protocol::kTouchEventsCapability;
66 72
67 return std::string(); 73 return std::string();
68 } 74 }
69 75
70 void BasicDesktopEnvironment::SetCapabilities(const std::string& capabilities) { 76 void BasicDesktopEnvironment::SetCapabilities(const std::string& capabilities) {
71 } 77 }
72 78
73 scoped_ptr<GnubbyAuthHandler> BasicDesktopEnvironment::CreateGnubbyAuthHandler( 79 scoped_ptr<GnubbyAuthHandler> BasicDesktopEnvironment::CreateGnubbyAuthHandler(
74 protocol::ClientStub* client_stub) { 80 protocol::ClientStub* client_stub) {
75 return nullptr; 81 return nullptr;
76 } 82 }
77 83
78 scoped_ptr<webrtc::DesktopCapturer> 84 scoped_ptr<webrtc::DesktopCapturer>
79 BasicDesktopEnvironment::CreateVideoCapturer() { 85 BasicDesktopEnvironment::CreateVideoCapturer() {
80 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 86 DCHECK(caller_task_runner_->BelongsToCurrentThread());
81 87
88 scoped_ptr<webrtc::DesktopCapturer> capturer;
89
82 #if defined(OS_CHROMEOS) 90 #if defined(OS_CHROMEOS)
83 return scoped_ptr<webrtc::DesktopCapturer>(new AuraDesktopCapturer()); 91 capturer.reset(new AuraDesktopCapturer());
84 #else // !defined(OS_CHROMEOS) 92 #else // !defined(OS_CHROMEOS)
85 // The basic desktop environment does not use X DAMAGE, since it is 93 capturer.reset(webrtc::ScreenCapturer::Create(*desktop_capture_options_));
86 // broken on many systems - see http://crbug.com/73423.
87 return make_scoped_ptr(
88 webrtc::ScreenCapturer::Create(*desktop_capture_options_));
89 #endif // !defined(OS_CHROMEOS) 94 #endif // !defined(OS_CHROMEOS)
95
96 return make_scoped_ptr(new DesktopCapturerProxy(video_capture_task_runner_,
97 std::move(capturer)));
90 } 98 }
91 99
92 BasicDesktopEnvironment::BasicDesktopEnvironment( 100 BasicDesktopEnvironment::BasicDesktopEnvironment(
93 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 101 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
102 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
94 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, 103 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
95 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 104 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
96 bool supports_touch_events) 105 bool supports_touch_events)
97 : caller_task_runner_(caller_task_runner), 106 : caller_task_runner_(caller_task_runner),
107 video_capture_task_runner_(video_capture_task_runner),
98 input_task_runner_(input_task_runner), 108 input_task_runner_(input_task_runner),
99 ui_task_runner_(ui_task_runner), 109 ui_task_runner_(ui_task_runner),
100 desktop_capture_options_( 110 desktop_capture_options_(new webrtc::DesktopCaptureOptions(
101 new webrtc::DesktopCaptureOptions( 111 webrtc::DesktopCaptureOptions::CreateDefault())),
102 webrtc::DesktopCaptureOptions::CreateDefault())),
103 supports_touch_events_(supports_touch_events) { 112 supports_touch_events_(supports_touch_events) {
104 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 113 DCHECK(caller_task_runner_->BelongsToCurrentThread());
105 #if defined(USE_X11) 114 #if defined(USE_X11)
106 IgnoreXServerGrabs(desktop_capture_options_->x_display()->display(), true); 115 IgnoreXServerGrabs(desktop_capture_options_->x_display()->display(), true);
107 #endif 116 #endif
108 } 117 }
109 118
110 BasicDesktopEnvironmentFactory::BasicDesktopEnvironmentFactory( 119 BasicDesktopEnvironmentFactory::BasicDesktopEnvironmentFactory(
111 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 120 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
121 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
112 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, 122 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
113 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) 123 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
114 : caller_task_runner_(caller_task_runner), 124 : caller_task_runner_(caller_task_runner),
125 video_capture_task_runner_(video_capture_task_runner),
115 input_task_runner_(input_task_runner), 126 input_task_runner_(input_task_runner),
116 ui_task_runner_(ui_task_runner), 127 ui_task_runner_(ui_task_runner),
117 supports_touch_events_(false) { 128 supports_touch_events_(false) {}
118 }
119 129
120 BasicDesktopEnvironmentFactory::~BasicDesktopEnvironmentFactory() { 130 BasicDesktopEnvironmentFactory::~BasicDesktopEnvironmentFactory() {}
121 }
122 131
123 bool BasicDesktopEnvironmentFactory::SupportsAudioCapture() const { 132 bool BasicDesktopEnvironmentFactory::SupportsAudioCapture() const {
124 DCHECK(caller_task_runner_->BelongsToCurrentThread()); 133 DCHECK(caller_task_runner_->BelongsToCurrentThread());
125 134
126 return AudioCapturer::IsSupported(); 135 return AudioCapturer::IsSupported();
127 } 136 }
128 137
129 } // namespace remoting 138 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/basic_desktop_environment.h ('k') | remoting/host/chromoting_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698