summaryrefslogtreecommitdiffstats
path: root/mojo/shell/public/cpp/lib/application_runner.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/shell/public/cpp/lib/application_runner.cc')
-rw-r--r--mojo/shell/public/cpp/lib/application_runner.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/mojo/shell/public/cpp/lib/application_runner.cc b/mojo/shell/public/cpp/lib/application_runner.cc
index 5253053..201aa62 100644
--- a/mojo/shell/public/cpp/lib/application_runner.cc
+++ b/mojo/shell/public/cpp/lib/application_runner.cc
@@ -5,10 +5,12 @@
#include "mojo/shell/public/cpp/application_runner.h"
#include "base/at_exit.h"
+#include "base/bind.h"
#include "base/command_line.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/process/launch.h"
+#include "base/run_loop.h"
#include "mojo/shell/public/cpp/shell_client.h"
#include "mojo/shell/public/cpp/shell_connection.h"
@@ -54,7 +56,9 @@ MojoResult ApplicationRunner::Run(MojoHandle shell_client_request_handle,
client_.get(),
MakeRequest<shell::mojom::ShellClient>(MakeScopedHandle(
MessagePipeHandle(shell_client_request_handle)))));
- loop->Run();
+ base::RunLoop run_loop;
+ connection_->set_connection_lost_closure(run_loop.QuitClosure());
+ run_loop.Run();
// It's very common for the client to cache the app and terminate on errors.
// If we don't delete the client before the app we run the risk of the
// client having a stale reference to the app and trying to use it.