diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-23 18:43:35 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-23 18:43:35 +0000 |
commit | 157e5d2a82b6b81e2f1e38202f7c6c2a6d888794 (patch) | |
tree | 8220dba701eeddf2c342c3d229776c6d55c0649d /chrome/plugin/plugin_channel.cc | |
parent | 4af6c48ec0e1d4c81a5f68a0bd78c125730d4e96 (diff) | |
download | chromium_src-157e5d2a82b6b81e2f1e38202f7c6c2a6d888794.zip chromium_src-157e5d2a82b6b81e2f1e38202f7c6c2a6d888794.tar.gz chromium_src-157e5d2a82b6b81e2f1e38202f7c6c2a6d888794.tar.bz2 |
linux (and some posix): multiprocess plugins compiling.
The goal of this change is to *not* make any behavioral change, but to
instead just get all the plugin-related files linking on Linux with
a bunch of NOTIMPLEMENTED()s in the appropriate places. It's enormous
enough already without any refactorings or new features.
Changes include:
- Lots of gcc warning fixes.
- Use portable replacements for Windows-specific functions (_strdup, etc.).
- Use TransportDIB instead of just shared memory in the plugin messaging.
Note that this is not fleshed out on Linux and on Windows it just hacks
in the existing handles so there should be no functional change.
- Fix --plugin-launcher to use cross-platform APIs.
Review URL: http://codereview.chromium.org/79020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14338 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/plugin/plugin_channel.cc')
-rw-r--r-- | chrome/plugin/plugin_channel.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/chrome/plugin/plugin_channel.cc b/chrome/plugin/plugin_channel.cc index 1c6a809..f14300f 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(); } |