| Index: win8/viewer/metro_viewer_process_host.cc
|
| diff --git a/win8/viewer/metro_viewer_process_host.cc b/win8/viewer/metro_viewer_process_host.cc
|
| index 2e04ef80a4ffbc327b9bbc0a348f7a0e79d6afc6..61a776c1206d7026add3b5db40e941a926da324b 100644
|
| --- a/win8/viewer/metro_viewer_process_host.cc
|
| +++ b/win8/viewer/metro_viewer_process_host.cc
|
| @@ -12,7 +12,6 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "base/path_service.h"
|
| #include "base/process/process.h"
|
| -#include "base/process/process_handle.h"
|
| #include "base/strings/string16.h"
|
| #include "base/synchronization/waitable_event.h"
|
| #include "base/time/time.h"
|
| @@ -68,14 +67,13 @@ MetroViewerProcessHost::~MetroViewerProcessHost() {
|
| if (message_filter_.get()) {
|
| // Wait for the viewer process to go away.
|
| if (viewer_process_id != base::kNullProcessId) {
|
| - base::ProcessHandle viewer_process = NULL;
|
| - base::OpenProcessHandleWithAccess(
|
| - viewer_process_id,
|
| - PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
|
| - &viewer_process);
|
| - if (viewer_process) {
|
| - ::WaitForSingleObject(viewer_process, INFINITE);
|
| - ::CloseHandle(viewer_process);
|
| + base::Process viewer_process =
|
| + base::Process::OpenWithAccess(
|
| + viewer_process_id,
|
| + PROCESS_QUERY_INFORMATION | SYNCHRONIZE);
|
| + if (viewer_process.IsValid()) {
|
| + int exit_code;
|
| + viewer_process.WaitForExit(&exit_code);
|
| }
|
| }
|
| channel_->RemoveFilter(message_filter_.get());
|
|
|