| Index: remoting/host/ipc_desktop_environment.cc
|
| diff --git a/remoting/host/ipc_desktop_environment.cc b/remoting/host/ipc_desktop_environment.cc
|
| index d94a3816041e0856ba648dda5dc02f99a1f9bdb9..cb853195b48fa1c3d57dcbaf840099e781e90360 100644
|
| --- a/remoting/host/ipc_desktop_environment.cc
|
| +++ b/remoting/host/ipc_desktop_environment.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/callback.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/logging.h"
|
| +#include "base/process_util.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "ipc/ipc_channel_proxy.h"
|
| #include "media/video/capture/screen/screen_capturer.h"
|
| @@ -21,6 +22,7 @@ namespace remoting {
|
|
|
| IpcDesktopEnvironment::IpcDesktopEnvironment(
|
| scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
|
| const std::string& client_jid,
|
| const base::Closure& disconnect_callback,
|
| base::WeakPtr<DesktopSessionConnector> desktop_session_connector)
|
| @@ -28,6 +30,7 @@ IpcDesktopEnvironment::IpcDesktopEnvironment(
|
| connected_(false),
|
| desktop_session_connector_(desktop_session_connector),
|
| desktop_session_proxy_(new DesktopSessionProxy(caller_task_runner,
|
| + io_task_runner,
|
| client_jid,
|
| disconnect_callback)) {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
| @@ -79,8 +82,10 @@ void IpcDesktopEnvironment::ConnectToDesktopSession() {
|
|
|
| IpcDesktopEnvironmentFactory::IpcDesktopEnvironmentFactory(
|
| scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
|
| IPC::ChannelProxy* daemon_channel)
|
| : caller_task_runner_(caller_task_runner),
|
| + io_task_runner_(io_task_runner),
|
| daemon_channel_(daemon_channel),
|
| connector_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
|
| next_id_(0) {
|
| @@ -96,7 +101,7 @@ scoped_ptr<DesktopEnvironment> IpcDesktopEnvironmentFactory::Create(
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
|
|
| return scoped_ptr<DesktopEnvironment>(new IpcDesktopEnvironment(
|
| - caller_task_runner_, client_jid, disconnect_callback,
|
| + caller_task_runner_, io_task_runner_, client_jid, disconnect_callback,
|
| connector_factory_.GetWeakPtr()));
|
| }
|
|
|
| @@ -140,7 +145,7 @@ void IpcDesktopEnvironmentFactory::DisconnectTerminal(
|
|
|
| void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached(
|
| int terminal_id,
|
| - IPC::PlatformFileForTransit desktop_process,
|
| + base::ProcessHandle desktop_process,
|
| IPC::PlatformFileForTransit desktop_pipe) {
|
| if (!caller_task_runner_->BelongsToCurrentThread()) {
|
| caller_task_runner_->PostTask(FROM_HERE, base::Bind(
|
| @@ -154,15 +159,13 @@ void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached(
|
| i->second->DetachFromDesktop();
|
| i->second->AttachToDesktop(desktop_process, desktop_pipe);
|
| } else {
|
| + base::CloseProcessHandle(desktop_process);
|
| +
|
| #if defined(OS_POSIX)
|
| - DCHECK(desktop_process.auto_close);
|
| DCHECK(desktop_pipe.auto_close);
|
|
|
| - base::ClosePlatformFile(desktop_process.fd);
|
| base::ClosePlatformFile(desktop_pipe.fd);
|
| -#elif defined(OS_WIN)
|
| - base::ClosePlatformFile(desktop_process);
|
| -#endif // defined(OS_WIN)
|
| +#endif // defined(OS_POSIX)
|
| }
|
| }
|
|
|
|
|