diff options
Diffstat (limited to 'remoting/host/desktop_environment.cc')
-rw-r--r-- | remoting/host/desktop_environment.cc | 52 |
1 files changed, 39 insertions, 13 deletions
diff --git a/remoting/host/desktop_environment.cc b/remoting/host/desktop_environment.cc index fbf4ffc..0007c8a 100644 --- a/remoting/host/desktop_environment.cc +++ b/remoting/host/desktop_environment.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -11,31 +11,57 @@ #include "remoting/host/chromoting_host_context.h" #include "remoting/host/event_executor.h" +#if defined(OS_WIN) +#include "remoting/host/session_event_executor_win.h" +#endif + namespace remoting { // static -DesktopEnvironment* DesktopEnvironment::Create(ChromotingHostContext* context) { +scoped_ptr<DesktopEnvironment> DesktopEnvironment::Create( + ChromotingHostContext* context) { scoped_ptr<Capturer> capturer(Capturer::Create()); - scoped_ptr<EventExecutor> event_executor( - EventExecutor::Create(context->desktop_message_loop(), capturer.get())); + scoped_ptr<protocol::InputStub> event_executor = + EventExecutor::Create(context->desktop_message_loop(), + capturer.get()); if (capturer.get() == NULL || event_executor.get() == NULL) { LOG(ERROR) << "Unable to create DesktopEnvironment"; - return NULL; + return scoped_ptr<DesktopEnvironment>(); } - return new DesktopEnvironment(context, - capturer.release(), - event_executor.release()); +#if defined(OS_WIN) + event_executor.reset(new SessionEventExecutorWin( + context->desktop_message_loop(), + context->io_message_loop(), + event_executor.Pass())); +#endif + + return scoped_ptr<DesktopEnvironment>( + new DesktopEnvironment(context, + capturer.Pass(), + event_executor.Pass())); +} + +// static +scoped_ptr<DesktopEnvironment> DesktopEnvironment::CreateFake( + ChromotingHostContext* context, + scoped_ptr<Capturer> capturer, + scoped_ptr<protocol::InputStub> event_executor) { + return scoped_ptr<DesktopEnvironment>( + new DesktopEnvironment(context, + capturer.Pass(), + event_executor.Pass())); } -DesktopEnvironment::DesktopEnvironment(ChromotingHostContext* context, - Capturer* capturer, - EventExecutor* event_executor) +DesktopEnvironment::DesktopEnvironment( + ChromotingHostContext* context, + scoped_ptr<Capturer> capturer, + scoped_ptr<protocol::InputStub> event_executor) : host_(NULL), context_(context), - capturer_(capturer), - event_executor_(event_executor) { + capturer_(capturer.Pass()), + event_executor_(event_executor.Pass()) { } DesktopEnvironment::~DesktopEnvironment() { |