Index: remoting/host/simple_host_process.cc |
diff --git a/remoting/host/simple_host_process.cc b/remoting/host/simple_host_process.cc |
index 0f12c43f7aca2fc29abe97f03db285240226514f..8697b3d3cdb449a6306dce414301803a0ecfae7e 100644 |
--- a/remoting/host/simple_host_process.cc |
+++ b/remoting/host/simple_host_process.cc |
@@ -27,6 +27,7 @@ |
#include "base/waitable_event.h" |
#include "remoting/host/capturer_fake.h" |
#include "remoting/host/chromoting_host.h" |
+#include "remoting/host/chromoting_host_context.h" |
#include "remoting/host/encoder_verbatim.h" |
#include "remoting/host/json_host_config.h" |
@@ -52,6 +53,10 @@ const char kHomePath[] = "HOME"; |
static char* GetEnvironmentVar(const char* x) { return getenv(x); } |
#endif |
+void ShutdownTask(MessageLoop* message_loop) { |
+ message_loop->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
+} |
+ |
const std::string kFakeSwitchName = "fake"; |
const std::string kConfigSwitchName = "config"; |
@@ -96,6 +101,7 @@ int main(int argc, char** argv) { |
if (fake) { |
// Inject a fake capturer. |
+ LOG(INFO) << "Usage a fake capturer."; |
capturer.reset(new remoting::CapturerFake()); |
} |
@@ -111,16 +117,25 @@ int main(int argc, char** argv) { |
return 1; |
} |
- base::WaitableEvent host_done(false, false); |
+ // Allocate a chromoting context and starts it. |
+ remoting::ChromotingHostContext context; |
+ context.Start(); |
+ |
+ // Construct a chromoting host. |
scoped_refptr<remoting::ChromotingHost> host = |
- new remoting::ChromotingHost(config, |
+ new remoting::ChromotingHost(&context, |
+ config, |
capturer.release(), |
encoder.release(), |
- executor.release(), |
- &host_done); |
- host->Run(); |
- host_done.Wait(); |
+ executor.release()); |
+ |
+ // Let the chromoting host runs until the shutdown task is executed. |
+ MessageLoop message_loop; |
+ host->Start(NewRunnableFunction(&ShutdownTask, &message_loop)); |
+ message_loop.Run(); |
+ // And then stop the chromoting context. |
+ context.Stop(); |
file_io_thread.Stop(); |
return 0; |
} |