Index: chrome/plugin/plugin_channel.cc |
diff --git a/chrome/plugin/plugin_channel.cc b/chrome/plugin/plugin_channel.cc |
index 1c6a809380cc72f8ca41400caf76a0e5447e059b..f14300f73eda1e4dd8454b080cdaf0ef7fbdfd14 100644 |
--- a/chrome/plugin/plugin_channel.cc |
+++ b/chrome/plugin/plugin_channel.cc |
@@ -2,8 +2,6 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <windows.h> |
- |
#include "chrome/plugin/plugin_channel.h" |
#include "base/command_line.h" |
@@ -17,7 +15,7 @@ |
PluginChannel* PluginChannel::GetPluginChannel(MessageLoop* ipc_message_loop) { |
static int next_id; |
std::wstring channel_name = StringPrintf( |
- L"%d.r%d", GetCurrentProcessId(), ++next_id); |
+ L"%d.r%d", base::GetCurrentProcId(), ++next_id); |
return static_cast<PluginChannel*>(PluginChannelBase::GetChannel( |
channel_name, |
@@ -27,7 +25,8 @@ PluginChannel* PluginChannel::GetPluginChannel(MessageLoop* ipc_message_loop) { |
false)); |
} |
-PluginChannel::PluginChannel() : in_send_(0), off_the_record_(false) { |
+PluginChannel::PluginChannel() : renderer_handle_(0), in_send_(0), |
+ off_the_record_(false) { |
SendUnblockingOnlyDuringDispatch(); |
ChildProcess::current()->AddRefProcess(); |
const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
@@ -35,6 +34,8 @@ PluginChannel::PluginChannel() : in_send_(0), off_the_record_(false) { |
} |
PluginChannel::~PluginChannel() { |
+ if (renderer_handle_) |
+ base::CloseProcessHandle(renderer_handle_); |
ChildProcess::current()->ReleaseProcess(); |
} |
@@ -95,8 +96,8 @@ void PluginChannel::OnGenerateRouteID(int* route_id) { |
} |
int PluginChannel::GenerateRouteID() { |
- static LONG last_id = 0; |
- return InterlockedIncrement(&last_id); |
+ static int last_id = 0; |
+ return ++last_id; |
} |
void PluginChannel::OnChannelConnected(int32 peer_pid) { |
@@ -104,12 +105,13 @@ void PluginChannel::OnChannelConnected(int32 peer_pid) { |
if (!base::OpenProcessHandle(peer_pid, &handle)) { |
NOTREACHED(); |
} |
- renderer_handle_.Set(handle); |
+ renderer_handle_ = handle; |
PluginChannelBase::OnChannelConnected(peer_pid); |
} |
void PluginChannel::OnChannelError() { |
- renderer_handle_.Set(NULL); |
+ base::CloseProcessHandle(renderer_handle_); |
+ renderer_handle_ = 0; |
PluginChannelBase::OnChannelError(); |
CleanUp(); |
} |