diff options
Diffstat (limited to 'remoting/host/desktop_process_main.cc')
-rw-r--r-- | remoting/host/desktop_process_main.cc | 96 |
1 files changed, 46 insertions, 50 deletions
diff --git a/remoting/host/desktop_process_main.cc b/remoting/host/desktop_process_main.cc index be7f918..fa678de 100644 --- a/remoting/host/desktop_process_main.cc +++ b/remoting/host/desktop_process_main.cc @@ -5,8 +5,6 @@ // This file implements the Windows service controlling Me2Me host processes // running within user sessions. -#include "remoting/host/desktop_process_main.h" - #include "base/at_exit.h" #include "base/bind.h" #include "base/bind_helpers.h" @@ -56,9 +54,7 @@ void Usage(const FilePath& program_name) { } // namespace -namespace remoting { - -int DesktopProcessMain(int argc, char** argv) { +int main(int argc, char** argv) { #if defined(OS_MACOSX) // Needed so we don't leak objects when threads are created. base::mac::ScopedNSAutoreleasePool pool; @@ -66,48 +62,17 @@ int DesktopProcessMain(int argc, char** argv) { CommandLine::Init(argc, argv); - // Initialize Breakpad as early as possible. On Mac the command-line needs to - // be initialized first, so that the preference for crash-reporting can be - // looked up in the config file. -#if defined(OFFICIAL_BUILD) && (defined(MAC_BREAKPAD) || defined(OS_WIN)) - if (IsUsageStatsAllowed()) { - InitializeCrashReporting(); - } -#endif // defined(OFFICIAL_BUILD) && (defined(MAC_BREAKPAD) || defined(OS_WIN)) - // This object instance is required by Chrome code (for example, // LazyInstance, MessageLoop). base::AtExitManager exit_manager; - InitHostLogging(); - -#if defined(OS_WIN) - // Register and initialize common controls. - INITCOMMONCONTROLSEX info; - info.dwSize = sizeof(info); - info.dwICC = ICC_STANDARD_CLASSES; - InitCommonControlsEx(&info); - - // Mark the process as DPI-aware, so Windows won't scale coordinates in APIs. - // N.B. This API exists on Vista and above. - if (base::win::GetVersion() >= base::win::VERSION_VISTA) { - FilePath path(base::GetNativeLibraryName(UTF8ToUTF16("user32"))); - base::ScopedNativeLibrary user32(path); - CHECK(user32.is_valid()); - - typedef BOOL (WINAPI * SetProcessDPIAwareFn)(); - SetProcessDPIAwareFn set_process_dpi_aware = - static_cast<SetProcessDPIAwareFn>( - user32.GetFunctionPointer("SetProcessDPIAware")); - set_process_dpi_aware(); - } -#endif // defined(OS_WIN) + remoting::InitHostLogging(); const CommandLine* command_line = CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(kHelpSwitchName) || command_line->HasSwitch(kQuestionSwitchName)) { Usage(command_line->GetProgram()); - return kSuccessExitCode; + return remoting::kSuccessExitCode; } std::string channel_name = @@ -115,7 +80,7 @@ int DesktopProcessMain(int argc, char** argv) { if (channel_name.empty()) { Usage(command_line->GetProgram()); - return kUsageExitCode; + return remoting::kUsageExitCode; } MessageLoop message_loop(MessageLoop::TYPE_UI); @@ -124,25 +89,56 @@ int DesktopProcessMain(int argc, char** argv) { base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask), message_loop.message_loop_proxy(), FROM_HERE, run_loop.QuitClosure()); - scoped_refptr<AutoThreadTaskRunner> ui_task_runner = - new AutoThreadTaskRunner(message_loop.message_loop_proxy(), - quit_ui_task_runner); + scoped_refptr<remoting::AutoThreadTaskRunner> ui_task_runner = + new remoting::AutoThreadTaskRunner(message_loop.message_loop_proxy(), + quit_ui_task_runner); - DesktopProcess desktop_process(ui_task_runner, channel_name); + remoting::DesktopProcess desktop_process(ui_task_runner, channel_name); if (!desktop_process.Start()) - return kInitializationFailed; + return remoting::kInitializationFailed; // Run the UI message loop. ui_task_runner = NULL; run_loop.Run(); - return kSuccessExitCode; + return remoting::kSuccessExitCode; } -} // namespace remoting +#if defined(OS_WIN) -#if !defined(OS_WIN) -int main(int argc, char** argv) { - return remoting::DesktopProcessMain(argc, argv); +int CALLBACK WinMain(HINSTANCE instance, + HINSTANCE previous_instance, + LPSTR raw_command_line, + int show_command) { +#ifdef OFFICIAL_BUILD + if (remoting::IsUsageStatsAllowed()) { + remoting::InitializeCrashReporting(); + } +#endif // OFFICIAL_BUILD + + // Register and initialize common controls. + INITCOMMONCONTROLSEX info; + info.dwSize = sizeof(info); + info.dwICC = ICC_STANDARD_CLASSES; + InitCommonControlsEx(&info); + + // Mark the process as DPI-aware, so Windows won't scale coordinates in APIs. + // N.B. This API exists on Vista and above. + if (base::win::GetVersion() >= base::win::VERSION_VISTA) { + FilePath path(base::GetNativeLibraryName(UTF8ToUTF16("user32"))); + base::ScopedNativeLibrary user32(path); + CHECK(user32.is_valid()); + + typedef BOOL (WINAPI * SetProcessDPIAwareFn)(); + SetProcessDPIAwareFn set_process_dpi_aware = + static_cast<SetProcessDPIAwareFn>( + user32.GetFunctionPointer("SetProcessDPIAware")); + set_process_dpi_aware(); + } + + // CommandLine::Init() ignores the passed |argc| and |argv| on Windows getting + // the command line from GetCommandLineW(), so we can safely pass NULL here. + return main(0, NULL); } -#endif // !defined(OS_WIN) + +#endif // defined(OS_WIN) |