summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRene Ladan <rene@FreeBSD.org>2011-09-27 17:29:06 +0000
committerRene Ladan <rene@FreeBSD.org>2011-09-27 17:29:06 +0000
commit331bef22b71f71eda65893ccdc2e71fe591322fb (patch)
tree802d9653d6b174ab676538bc54674b0b29d02a3d
parent- Correct creation date. (diff)
Enable running Chromium with kern.ipc.shm_allow_removed=1 by using SysV IPC
PR: ports/157730 Submitted by: Vladimir I. Pushkar [vladimir.pushkar gmail.com] Obtained from: Chromium Chruetertee repository r227,r228,r229
Notes
Notes: svn path=/head/; revision=282499
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__backing_store_x.cc22
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc11
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc11
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc20
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc20
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h29
-rw-r--r--www/chromium/files/patch-content__common__common_param_traits.h11
-rw-r--r--www/chromium/files/patch-content__common__plugin_messages.h38
-rw-r--r--www/chromium/files/patch-content__common__view_messages.h11
-rw-r--r--www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc34
-rw-r--r--www/chromium/files/patch-content__renderer__render_process_impl.cc34
-rw-r--r--www/chromium/files/patch-content__renderer__render_view.cc29
-rw-r--r--www/chromium/files/patch-content__renderer__render_view.h29
-rw-r--r--www/chromium/files/patch-content__renderer__render_widget.cc11
-rw-r--r--www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc26
-rw-r--r--www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h20
-rw-r--r--www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc20
-rw-r--r--www/chromium/files/patch-ppapi__proxy__serialized_structs.h11
-rw-r--r--www/chromium/files/patch-ui__base__x__x11_util.cc19
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__surface.gyp17
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__transport_dib.h44
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc110
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__transport_dib_linux.cc28
23 files changed, 96 insertions, 509 deletions
diff --git a/www/chromium/files/patch-content__browser__renderer_host__backing_store_x.cc b/www/chromium/files/patch-content__browser__renderer_host__backing_store_x.cc
new file mode 100644
index 000000000000..8bbc8b42dbd9
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__backing_store_x.cc
@@ -0,0 +1,22 @@
+--- content/browser/renderer_host/backing_store_x.cc.orig 2011-09-14 11:01:10.000000000 +0300
++++ content/browser/renderer_host/backing_store_x.cc 2011-09-22 00:21:16.000000000 +0300
+@@ -57,6 +57,9 @@
+ XShmDetach(display, shminfo);
+ XDestroyImage(image);
+ shmdt(shminfo->shmaddr);
++#if defined(OS_FREEBSD)
++ shmctl(shminfo->shmid, IPC_RMID, 0);
++#endif
+ }
+
+ BackingStoreX::BackingStoreX(RenderWidgetHost* widget,
+@@ -339,7 +342,9 @@
+ }
+
+ void* mapped_memory = shmat(shminfo.shmid, NULL, SHM_RDONLY);
++#if !defined(OS_FREEBSD)
+ shmctl(shminfo.shmid, IPC_RMID, 0);
++#endif
+ if (mapped_memory == (void*)-1) {
+ XDestroyImage(image);
+ return false;
diff --git a/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc b/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc
deleted file mode 100644
index 6060f7250042..000000000000
--- a/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/renderer_host/browser_render_process_host.cc.orig 2011-03-20 22:02:04.283738713 +0200
-+++ content/browser/renderer_host/browser_render_process_host.cc 2011-03-20 22:02:04.448747953 +0200
-@@ -886,7 +886,7 @@
- HANDLE section = app::win::GetSectionFromProcess(
- dib_id.handle, GetHandle(), false /* read write */);
- return TransportDIB::Map(section);
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On OSX, the browser allocates all DIBs and keeps a file descriptor around
- // for each.
- return widget_helper_->MapTransportDIB(dib_id);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc b/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc
deleted file mode 100644
index e5de334d4a2e..000000000000
--- a/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/renderer_host/mock_render_process_host.cc.orig 2010-12-16 02:11:57.000000000 +0100
-+++ content/browser/renderer_host/mock_render_process_host.cc 2010-12-20 20:15:08.000000000 +0100
-@@ -106,7 +106,7 @@
- DuplicateHandle(GetCurrentProcess(), dib_id.handle, GetCurrentProcess(),
- &duped, 0, TRUE, DUPLICATE_SAME_ACCESS);
- transport_dib_ = TransportDIB::Map(duped);
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On Mac, TransportDIBs are always created in the browser, so we cannot map
- // one from a dib_id.
- transport_dib_ = TransportDIB::Create(100 * 100 * 4, 0);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc b/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc
deleted file mode 100644
index 7466aff71efd..000000000000
--- a/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/browser/renderer_host/render_message_filter.cc.orig 2011-06-24 11:30:32.000000000 +0300
-+++ content/browser/renderer_host/render_message_filter.cc 2011-06-26 20:58:31.256783053 +0300
-@@ -360,7 +360,7 @@
- OnCheckNotificationPermission)
- IPC_MESSAGE_HANDLER(ViewHostMsg_AllocateSharedMemoryBuffer,
- OnAllocateSharedMemoryBuffer)
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- IPC_MESSAGE_HANDLER(ViewHostMsg_AllocTransportDIB, OnAllocTransportDIB)
- IPC_MESSAGE_HANDLER(ViewHostMsg_FreeTransportDIB, OnFreeTransportDIB)
- #endif
-@@ -647,7 +647,7 @@
- return context_getter->GetURLRequestContext();
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- void RenderMessageFilter::OnAllocTransportDIB(
- size_t size, bool cache_in_browser, TransportDIB::Handle* handle) {
- render_widget_helper_->AllocTransportDIB(size, cache_in_browser, handle);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc
deleted file mode 100644
index 1a5da08da1fc..000000000000
--- a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/browser/renderer_host/render_widget_helper.cc.orig 2010-12-16 02:11:57.000000000 +0100
-+++ content/browser/renderer_host/render_widget_helper.cc 2010-12-20 20:15:08.000000000 +0100
-@@ -58,7 +58,7 @@
- // object, so we should not be destroyed unless pending_paints_ is empty!
- DCHECK(pending_paints_.empty());
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- ClearAllocatedDIBs();
- #endif
- }
-@@ -274,7 +274,7 @@
- host->CreateNewFullscreenWidget(route_id, popup_type);
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- TransportDIB* RenderWidgetHelper::MapTransportDIB(TransportDIB::Id dib_id) {
- AutoLock locked(allocated_dibs_lock_);
-
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h
deleted file mode 100644
index c53632ea7233..000000000000
--- a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h
+++ /dev/null
@@ -1,29 +0,0 @@
---- content/browser/renderer_host/render_widget_helper.h.orig 2010-12-16 02:11:57.000000000 +0100
-+++ content/browser/renderer_host/render_widget_helper.h 2010-12-20 20:15:08.000000000 +0100
-@@ -110,7 +110,7 @@
- const base::TimeDelta& max_delay,
- IPC::Message* msg);
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Given the id of a transport DIB, return a mapping to it or NULL on error.
- TransportDIB* MapTransportDIB(TransportDIB::Id dib_id);
- #endif
-@@ -134,7 +134,7 @@
- WebKit::WebPopupType popup_type,
- int* route_id);
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Called on the IO thread to handle the allocation of a TransportDIB. If
- // |cache_in_browser| is |true|, then a copy of the shmem is kept by the
- // browser, and it is the caller's repsonsibility to call
-@@ -191,7 +191,7 @@
- // Called on the IO thread to resume a cross-site response.
- void OnCrossSiteClosePageACK(const ViewMsg_ClosePage_Params& params);
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Called on destruction to release all allocated transport DIBs
- void ClearAllocatedDIBs();
-
diff --git a/www/chromium/files/patch-content__common__common_param_traits.h b/www/chromium/files/patch-content__common__common_param_traits.h
deleted file mode 100644
index 1cb5579ec583..000000000000
--- a/www/chromium/files/patch-content__common__common_param_traits.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/common/common_param_traits.h.orig 2011-06-06 00:08:49.215163238 +0300
-+++ content/common/common_param_traits.h 2011-06-06 00:09:04.929165157 +0300
-@@ -187,7 +187,7 @@
- };
- #endif
-
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_FREEBSD)
- template<>
- struct ParamTraits<TransportDIB::Id> {
- typedef TransportDIB::Id param_type;
diff --git a/www/chromium/files/patch-content__common__plugin_messages.h b/www/chromium/files/patch-content__common__plugin_messages.h
deleted file mode 100644
index bed300ec9240..000000000000
--- a/www/chromium/files/patch-content__common__plugin_messages.h
+++ /dev/null
@@ -1,38 +0,0 @@
---- content/common/plugin_messages.h.orig 2011-07-28 11:01:09.000000000 +0300
-+++ content/common/plugin_messages.h 2011-09-06 23:29:54.000000000 +0300
-@@ -111,7 +111,7 @@
- gfx::PluginWindowHandle /* output: X window id */)
- #endif
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On Mac OS X, we need the browser to keep track of plugin windows so
- // that it can add and remove them from stacking groups, hide and show the
- // menu bar, etc. We pass the window rect for convenience so that the
-@@ -206,7 +206,7 @@
- IPC_MESSAGE_ROUTED1(PluginMsg_SetContentAreaFocus,
- bool /* has_focus */)
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- IPC_MESSAGE_ROUTED1(PluginMsg_SetWindowFocus,
- bool /* has_focus */)
-
-@@ -278,7 +278,7 @@
- IPC_MESSAGE_CONTROL1(PluginMsg_ResetModalDialogEvent,
- gfx::NativeViewId /* containing_window */)
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // This message, used only on 10.6 and later, transmits the "fake"
- // window handle allocated by the browser on behalf of the renderer
- // to the GPU plugin.
-@@ -358,7 +358,7 @@
-
- IPC_MESSAGE_CONTROL0(PluginHostMsg_PluginShuttingDown)
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- IPC_MESSAGE_ROUTED1(PluginHostMsg_FocusChanged,
- bool /* focused */)
-
diff --git a/www/chromium/files/patch-content__common__view_messages.h b/www/chromium/files/patch-content__common__view_messages.h
deleted file mode 100644
index 1ad3b87f2782..000000000000
--- a/www/chromium/files/patch-content__common__view_messages.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/common/view_messages.h.orig 2011-06-05 19:01:24.752163332 +0300
-+++ content/common/view_messages.h 2011-06-05 19:01:40.420163036 +0300
-@@ -1783,7 +1783,7 @@
- IPC_MESSAGE_CONTROL1(ViewHostMsg_SuddenTerminationChanged,
- bool /* enabled */)
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On OSX, we cannot allocated shared memory from within the sandbox, so
- // this call exists for the renderer to ask the browser to allocate memory
- // on its behalf. We return a file descriptor to the POSIX shared memory.
diff --git a/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc b/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
index 30d9fc55bc7e..78c4b0de95e2 100644
--- a/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
+++ b/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
@@ -1,29 +1,11 @@
---- content/renderer/pepper_plugin_delegate_impl.cc.orig 2011-05-06 12:02:55.000000000 +0300
-+++ content/renderer/pepper_plugin_delegate_impl.cc 2011-06-04 14:31:17.879380898 +0300
-@@ -112,7 +112,7 @@
- dib_(dib) {
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On Mac, we have to tell the browser to free the transport DIB.
- virtual ~PlatformImage2DImpl() {
- if (dib_.get()) {
-@@ -130,7 +130,7 @@
- *byte_count = dib_->size();
- #if defined(OS_WIN)
+--- content/renderer/pepper_plugin_delegate_impl.cc.orig 2011-09-19 00:22:00.000000000 +0300
++++ content/renderer/pepper_plugin_delegate_impl.cc 2011-09-19 00:22:35.000000000 +0300
+@@ -141,7 +141,7 @@
return reinterpret_cast<intptr_t>(dib_->handle());
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ #elif defined(OS_MACOSX)
return static_cast<intptr_t>(dib_->handle().fd);
- #elif defined(OS_LINUX)
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_FREEBSD)
return static_cast<intptr_t>(dib_->handle());
-@@ -758,7 +758,7 @@
- uint32 buffer_size = width * height * 4;
-
- // Allocate the transport DIB and the PlatformCanvas pointing to it.
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On the Mac, shared memory has to be created in the browser in order to
- // work in the sandbox. Do this by sending a message to the browser
- // requesting a TransportDIB (see also
+ #endif
+ }
diff --git a/www/chromium/files/patch-content__renderer__render_process_impl.cc b/www/chromium/files/patch-content__renderer__render_process_impl.cc
index cb310856542e..887915c68e29 100644
--- a/www/chromium/files/patch-content__renderer__render_process_impl.cc
+++ b/www/chromium/files/patch-content__renderer__render_process_impl.cc
@@ -1,24 +1,28 @@
---- content/renderer/render_process_impl.cc.orig 2010-12-16 02:11:59.000000000 +0100
-+++ content/renderer/render_process_impl.cc 2010-12-20 20:15:08.000000000 +0100
-@@ -243,7 +243,7 @@
- #if defined(OS_WIN) || defined(OS_LINUX)
+--- content/renderer/render_process_impl.cc.orig 2011-09-14 01:53:06.000000000 +0300
++++ content/renderer/render_process_impl.cc 2011-09-14 01:55:08.000000000 +0300
+@@ -87,7 +87,7 @@
+
+ bool RenderProcessImpl::InProcessPlugins() {
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Plugin processes require a UI message loop, and the Linux message loop
+ // implementation only allows one UI loop per process.
+ if (command_line.HasSwitch(switches::kInProcessPlugins))
+@@ -103,10 +103,10 @@
+ // Platform specific code for dealing with bitmap transport...
+
+ TransportDIB* RenderProcessImpl::CreateTransportDIB(size_t size) {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)
// Windows and Linux create transport DIBs inside the renderer
return TransportDIB::Create(size, transport_dib_next_sequence_number_++);
-#elif defined(OS_MACOSX) // defined(OS_WIN) || defined(OS_LINUX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD) // defined(OS_WIN) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)
// Mac creates transport DIBs in the browser, so we need to do a sync IPC to
// get one. The TransportDIB is cached in the browser.
TransportDIB::Handle handle;
-@@ -260,7 +260,7 @@
- if (!dib)
- return;
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On Mac we need to tell the browser that it can drop a reference to the
- // shared memory.
- IPC::Message* msg = new ViewHostMsg_FreeTransportDIB(dib->id());
-@@ -278,7 +278,7 @@
+@@ -141,7 +141,7 @@
int width = rect.width();
int height = rect.height();
const size_t stride = skia::PlatformCanvas::StrideForWidth(rect.width());
diff --git a/www/chromium/files/patch-content__renderer__render_view.cc b/www/chromium/files/patch-content__renderer__render_view.cc
deleted file mode 100644
index 71157cce85e5..000000000000
--- a/www/chromium/files/patch-content__renderer__render_view.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- content/renderer/render_view.cc.orig 2011-08-30 11:58:21.000000000 +0300
-+++ content/renderer/render_view.cc 2011-09-11 22:31:33.000000000 +0300
-@@ -437,7 +437,7 @@
- file_chooser_completions_.pop_front();
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Destroy all fake plugin window handles on the browser side.
- while (!fake_plugin_window_handles_.empty()) {
- // Make sure no NULL plugin window handles were inserted into this list.
-@@ -1522,7 +1522,7 @@
- }
-
- bool RenderView::isSmartInsertDeleteEnabled() {
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- return true;
- #else
- return false;
-@@ -4187,7 +4187,7 @@
- return true;
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- void RenderView::PluginFocusChanged(bool focused, int plugin_id) {
- IPC::Message* msg = new ViewHostMsg_PluginFocusChanged(routing_id(),
- focused, plugin_id);
diff --git a/www/chromium/files/patch-content__renderer__render_view.h b/www/chromium/files/patch-content__renderer__render_view.h
deleted file mode 100644
index 17b9d7ca4971..000000000000
--- a/www/chromium/files/patch-content__renderer__render_view.h
+++ /dev/null
@@ -1,29 +0,0 @@
---- content/renderer/render_view.h.orig 2011-09-10 18:40:54.000000000 +0300
-+++ content/renderer/render_view.h 2011-09-10 19:13:46.000000000 +0300
-@@ -312,7 +312,7 @@
- // Request updated policy regarding firewall NAT traversal being enabled.
- void RequestRemoteAccessClientFirewallTraversal();
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Informs the render view that the given plugin has gained or lost focus.
- void PluginFocusChanged(bool focused, int plugin_id);
-
-@@ -654,7 +654,7 @@
- FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnSetTextDirection);
- FRIEND_TEST_ALL_PREFIXES(RenderViewTest, StaleNavigationsIgnored);
- FRIEND_TEST_ALL_PREFIXES(RenderViewTest, UpdateTargetURLWithInvalidURL);
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp);
- #endif
- FRIEND_TEST_ALL_PREFIXES(RenderViewTest, SetHistoryLengthAndPrune);
-@@ -1079,7 +1079,7 @@
- // states for the sizes).
- base::OneShotTimer<RenderView> check_preferred_size_timer_;
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Track the fake plugin window handles allocated on the browser side for
- // the accelerated compositor and (currently) accelerated plugins so that
- // we can discard them when the view goes away.
diff --git a/www/chromium/files/patch-content__renderer__render_widget.cc b/www/chromium/files/patch-content__renderer__render_widget.cc
deleted file mode 100644
index b5c827ad163a..000000000000
--- a/www/chromium/files/patch-content__renderer__render_widget.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/renderer/render_widget.cc.orig 2011-03-23 00:47:39.891641114 +0200
-+++ content/renderer/render_widget.cc 2011-03-23 00:48:36.043641158 +0200
-@@ -888,7 +888,7 @@
- // Close our unused handle.
- #if defined(OS_WIN)
- ::CloseHandle(dib_handle);
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- base::SharedMemory::CloseHandle(dib_handle);
- #endif
- }
diff --git a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc
deleted file mode 100644
index 772b38d5ca50..000000000000
--- a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc
+++ /dev/null
@@ -1,26 +0,0 @@
---- content/renderer/webplugin_delegate_proxy.cc.orig 2011-08-30 11:58:21.000000000 +0300
-+++ content/renderer/webplugin_delegate_proxy.cc 2011-09-11 22:57:59.000000000 +0300
-@@ -494,7 +494,7 @@
- static void CopyTransportDIBHandleForMessage(
- const TransportDIB::Handle& handle_in,
- TransportDIB::Handle* handle_out) {
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // On Mac, TransportDIB::Handle is typedef'ed to FileDescriptor, and
- // FileDescriptor message fields needs to remain valid until the message is
- // sent or else the sendmsg() call will fail.
-@@ -644,12 +644,12 @@
- scoped_ptr<TransportDIB>* memory,
- scoped_ptr<skia::PlatformCanvas>* canvas) {
- const size_t size = BitmapSizeForPluginRect(plugin_rect_);
--#if defined(OS_POSIX) && !defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && !defined(OS_FREEBSD)
- memory->reset(TransportDIB::Create(size, 0));
- if (!memory->get())
- return false;
- #endif
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
- TransportDIB::Handle handle;
- IPC::Message* msg = new ViewHostMsg_AllocTransportDIB(size, false, &handle);
- if (!RenderThread::current()->Send(msg))
diff --git a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h
deleted file mode 100644
index d61b89975e60..000000000000
--- a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/renderer/webplugin_delegate_proxy.h.orig 2011-09-11 19:07:19.000000000 +0300
-+++ content/renderer/webplugin_delegate_proxy.h 2011-09-11 19:07:36.000000000 +0300
-@@ -21,7 +21,7 @@
- #include "webkit/plugins/npapi/webplugininfo.h"
- #include "webkit/plugins/npapi/webplugin_delegate.h"
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- #include "base/hash_tables.h"
- #include "base/memory/linked_ptr.h"
- #endif
-@@ -243,7 +243,7 @@
- // point the window has already been destroyed).
- void WillDestroyWindow();
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_FREEBSD)
- // Synthesize a fake window handle for the plug-in to identify the instance
- // to the browser, allowing mapping to a surface for hardware acceleration
- // of plug-in content. The browser generates the handle which is then set on
diff --git a/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc b/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc
deleted file mode 100644
index b4f7bd82abae..000000000000
--- a/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- ppapi/proxy/ppb_image_data_proxy.cc.orig 2011-06-28 23:59:12.540806582 +0300
-+++ ppapi/proxy/ppb_image_data_proxy.cc 2011-06-28 23:59:15.075806980 +0300
-@@ -111,7 +111,7 @@
-
- #if defined(OS_WIN)
- const ImageHandle ImageData::NullHandle = NULL;
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- const ImageHandle ImageData::NullHandle = ImageHandle();
- #else
- const ImageHandle ImageData::NullHandle = 0;
-@@ -120,7 +120,7 @@
- ImageHandle ImageData::HandleFromInt(int32_t i) {
- #if defined(OS_WIN)
- return reinterpret_cast<ImageHandle>(i);
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- return ImageHandle(i, false);
- #else
- return static_cast<ImageHandle>(i);
diff --git a/www/chromium/files/patch-ppapi__proxy__serialized_structs.h b/www/chromium/files/patch-ppapi__proxy__serialized_structs.h
deleted file mode 100644
index e23ca7e4adf1..000000000000
--- a/www/chromium/files/patch-ppapi__proxy__serialized_structs.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ppapi/proxy/serialized_structs.h.orig 2011-06-27 23:46:48.860441060 +0300
-+++ ppapi/proxy/serialized_structs.h 2011-06-27 23:46:52.210441968 +0300
-@@ -115,7 +115,7 @@
-
- #if defined(OS_WIN)
- typedef HANDLE ImageHandle;
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- typedef base::SharedMemoryHandle ImageHandle;
- #else
- // On X Windows this is a SysV shared memory key.
diff --git a/www/chromium/files/patch-ui__base__x__x11_util.cc b/www/chromium/files/patch-ui__base__x__x11_util.cc
new file mode 100644
index 000000000000..7e54bebb7d52
--- /dev/null
+++ b/www/chromium/files/patch-ui__base__x__x11_util.cc
@@ -0,0 +1,19 @@
+--- ui/base/x/x11_util.cc.orig 2011-09-21 11:09:03.000000000 +0300
++++ ui/base/x/x11_util.cc 2011-09-21 11:10:13.000000000 +0300
+@@ -112,8 +112,6 @@
+ if (shmkey == -1)
+ return SHARED_MEMORY_NONE;
+ void* address = shmat(shmkey, NULL, 0);
+- // Mark the shared memory region for deletion
+- shmctl(shmkey, IPC_RMID, NULL);
+
+ XShmSegmentInfo shminfo;
+ memset(&shminfo, 0, sizeof(shminfo));
+@@ -125,6 +123,7 @@
+ if (gdk_error_trap_pop())
+ result = false;
+ shmdt(address);
++ shmctl(shmkey, IPC_RMID, NULL);
+ if (!result)
+ return SHARED_MEMORY_NONE;
+
diff --git a/www/chromium/files/patch-ui__gfx__surface__surface.gyp b/www/chromium/files/patch-ui__gfx__surface__surface.gyp
deleted file mode 100644
index 7fd590484503..000000000000
--- a/www/chromium/files/patch-ui__gfx__surface__surface.gyp
+++ /dev/null
@@ -1,17 +0,0 @@
---- ui/gfx/surface/surface.gyp.orig 2011-09-09 21:37:36.000000000 +0300
-+++ ui/gfx/surface/surface.gyp 2011-09-09 21:45:23.000000000 +0300
-@@ -14,6 +14,14 @@
- '<(DEPTH)/third_party/angle/include',
- ],
- }],
-+ ['OS == "freebsd"', {
-+ 'sources!': [
-+ 'transport_dib_linux.cc',
-+ ],
-+ 'sources': [
-+ 'transport_dib_freebsd.cc',
-+ ],
-+ }],
- ],
- },
- 'targets': [
diff --git a/www/chromium/files/patch-ui__gfx__surface__transport_dib.h b/www/chromium/files/patch-ui__gfx__surface__transport_dib.h
deleted file mode 100644
index 4165a37e33bd..000000000000
--- a/www/chromium/files/patch-ui__gfx__surface__transport_dib.h
+++ /dev/null
@@ -1,44 +0,0 @@
---- ui/gfx/surface/transport_dib.h.orig 2011-05-06 12:03:42.000000000 +0300
-+++ ui/gfx/surface/transport_dib.h 2011-06-05 21:06:20.559165060 +0300
-@@ -8,7 +8,7 @@
-
- #include "base/basictypes.h"
-
--#if defined(OS_WIN) || defined(OS_MACOSX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_FREEBSD)
- #include "base/shared_memory.h"
- #endif
-
-@@ -78,7 +78,7 @@
- static int fake_handle = 10;
- return reinterpret_cast<Handle>(fake_handle++);
- }
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
- typedef base::SharedMemoryHandle Handle;
- // On Mac, the inode number of the backing file is used as an id.
- typedef base::SharedMemoryId Id;
-@@ -93,7 +93,7 @@
- static int fake_handle = 10;
- return Handle(fake_handle++, false);
- }
--#elif defined(USE_X11)
-+#elif defined(OS_LINUX)
- typedef int Handle; // These two ints are SysV IPC shared memory keys
- struct Id {
- // Ensure that default initialized Ids are invalid.
-@@ -184,11 +184,12 @@
-
- private:
- TransportDIB();
--#if defined(OS_WIN) || defined(OS_MACOSX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_FREEBSD)
- explicit TransportDIB(base::SharedMemoryHandle dib);
- base::SharedMemory shared_memory_;
- uint32 sequence_num_;
--#elif defined(USE_X11)
-+#endif
-+#if defined(USE_X11)
- Id key_; // SysV shared memory id
- void* address_; // mapped address
- XSharedMemoryId x_shm_; // X id for the shared segment
diff --git a/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc b/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc
deleted file mode 100644
index 8d1eb2332774..000000000000
--- a/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc
+++ /dev/null
@@ -1,110 +0,0 @@
---- /dev/null 2011-06-28 23:33:00.000000000 +0300
-+++ ui/gfx/surface/transport_dib_freebsd.cc 2011-06-28 23:30:26.428806593 +0300
-@@ -0,0 +1,107 @@
-+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "ui/gfx/surface/transport_dib.h"
-+
-+#include <unistd.h>
-+#include <sys/stat.h>
-+
-+#include "base/eintr_wrapper.h"
-+#include "base/logging.h"
-+#include "base/memory/scoped_ptr.h"
-+#include "base/shared_memory.h"
-+#include "skia/ext/platform_canvas.h"
-+
-+TransportDIB::TransportDIB()
-+ : size_(0) {
-+}
-+
-+TransportDIB::TransportDIB(TransportDIB::Handle dib)
-+ : shared_memory_(dib, false /* read write */),
-+ size_(0) {
-+}
-+
-+TransportDIB::~TransportDIB() {
-+}
-+
-+// static
-+TransportDIB* TransportDIB::Create(size_t size, uint32 sequence_num) {
-+ TransportDIB* dib = new TransportDIB;
-+ if (!dib->shared_memory_.CreateAndMapAnonymous(size)) {
-+ delete dib;
-+ return NULL;
-+ }
-+
-+ dib->size_ = size;
-+ return dib;
-+}
-+
-+// static
-+TransportDIB* TransportDIB::Map(Handle handle) {
-+ scoped_ptr<TransportDIB> dib(CreateWithHandle(handle));
-+ if (!dib->Map())
-+ return NULL;
-+ return dib.release();
-+}
-+
-+// static
-+TransportDIB* TransportDIB::CreateWithHandle(Handle handle) {
-+ return new TransportDIB(handle);
-+}
-+
-+// static
-+bool TransportDIB::is_valid_handle(Handle dib) {
-+ return dib.fd >= 0;
-+}
-+
-+// static
-+bool TransportDIB::is_valid_id(Id id) {
-+ return id != 0;
-+}
-+
-+skia::PlatformCanvas* TransportDIB::GetPlatformCanvas(int w, int h) {
-+ if (!memory() && !Map())
-+ return NULL;
-+ scoped_ptr<skia::PlatformCanvas> canvas(new skia::PlatformCanvas);
-+ if (!canvas->initialize(w, h, true, reinterpret_cast<uint8_t*>(memory())))
-+ return NULL;
-+ return canvas.release();
-+}
-+
-+bool TransportDIB::Map() {
-+ if (!is_valid_handle(handle()))
-+ return false;
-+ if (memory())
-+ return true;
-+
-+ struct stat st;
-+ if ((fstat(shared_memory_.handle().fd, &st) != 0) ||
-+ (!shared_memory_.Map(st.st_size))) {
-+ return false;
-+ }
-+
-+ size_ = st.st_size;
-+ return true;
-+}
-+
-+void* TransportDIB::memory() const {
-+ return shared_memory_.memory();
-+}
-+
-+TransportDIB::Id TransportDIB::id() const {
-+ return shared_memory_.id();
-+}
-+
-+TransportDIB::Handle TransportDIB::handle() const {
-+ return shared_memory_.handle();
-+}
-+
-+XID TransportDIB::MapToX(Display* display) {
-+ if (!x_shm_) {
-+ x_shm_ = ui::AttachSharedMemory(display, key_);
-+ display_ = display;
-+ }
-+
-+ return x_shm_;
-+}
diff --git a/www/chromium/files/patch-ui__gfx__surface__transport_dib_linux.cc b/www/chromium/files/patch-ui__gfx__surface__transport_dib_linux.cc
new file mode 100644
index 000000000000..91adcc1e0dca
--- /dev/null
+++ b/www/chromium/files/patch-ui__gfx__surface__transport_dib_linux.cc
@@ -0,0 +1,28 @@
+--- ui/gfx/surface/transport_dib_linux.cc.orig 2011-09-14 11:02:00.000000000 +0300
++++ ui/gfx/surface/transport_dib_linux.cc 2011-09-21 13:59:55.000000000 +0300
+@@ -31,6 +31,11 @@
+ address_ = kInvalidAddress;
+ }
+
++#if defined(OS_FREEBSD)
++ if(is_valid_id(key_))
++ shmctl(key_.shmkey, IPC_RMID, 0);
++#endif
++
+ if (x_shm_) {
+ DCHECK(display_);
+ ui::DetachSharedMemory(display_, x_shm_);
+@@ -50,10 +55,13 @@
+ }
+
+ void* address = shmat(shmkey, NULL /* desired address */, 0 /* flags */);
++ // On BSD we can't access the shared memory after is marked for deletion.
++#if !defined(OS_FREEBSD)
+ // Here we mark the shared memory for deletion. Since we attached it in the
+ // line above, it doesn't actually get deleted but, if we crash, this means
+ // that the kernel will automatically clean it up for us.
+ shmctl(shmkey, IPC_RMID, 0);
++#endif
+ if (address == kInvalidAddress)
+ return NULL;
+