diff options
author | Rene Ladan <rene@FreeBSD.org> | 2011-09-27 17:29:06 +0000 |
---|---|---|
committer | Rene Ladan <rene@FreeBSD.org> | 2011-09-27 17:29:06 +0000 |
commit | 331bef22b71f71eda65893ccdc2e71fe591322fb (patch) | |
tree | 802d9653d6b174ab676538bc54674b0b29d02a3d | |
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
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; + |