Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: content/renderer/render_process_impl.cc

Issue 8341052: share all the needed linux code with OpenBSD in chrome and content (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: wrap long lines Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/pepper_plugin_delegate_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <objidl.h> 9 #include <objidl.h>
10 #include <mlang.h> 10 #include <mlang.h>
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // log important leaked objects 79 // log important leaked objects
80 webkit_glue::CheckForLeaks(); 80 webkit_glue::CheckForLeaks();
81 #endif 81 #endif
82 82
83 GetShutDownEvent()->Signal(); 83 GetShutDownEvent()->Signal();
84 ClearTransportDIBCache(); 84 ClearTransportDIBCache();
85 } 85 }
86 86
87 bool RenderProcessImpl::InProcessPlugins() { 87 bool RenderProcessImpl::InProcessPlugins() {
88 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 88 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
89 #if defined(OS_LINUX) 89 #if defined(OS_LINUX) || defined(OS_OPENBSD)
90 // Plugin processes require a UI message loop, and the Linux message loop 90 // Plugin processes require a UI message loop, and the Linux message loop
91 // implementation only allows one UI loop per process. 91 // implementation only allows one UI loop per process.
92 if (command_line.HasSwitch(switches::kInProcessPlugins)) 92 if (command_line.HasSwitch(switches::kInProcessPlugins))
93 NOTIMPLEMENTED() << ": in process plugins not supported on Linux"; 93 NOTIMPLEMENTED() << ": in process plugins not supported on Linux";
94 return command_line.HasSwitch(switches::kInProcessPlugins); 94 return command_line.HasSwitch(switches::kInProcessPlugins);
95 #else 95 #else
96 return command_line.HasSwitch(switches::kInProcessPlugins) || 96 return command_line.HasSwitch(switches::kInProcessPlugins) ||
97 command_line.HasSwitch(switches::kSingleProcess); 97 command_line.HasSwitch(switches::kSingleProcess);
98 #endif 98 #endif
99 } 99 }
100 100
101 // ----------------------------------------------------------------------------- 101 // -----------------------------------------------------------------------------
102 // Platform specific code for dealing with bitmap transport... 102 // Platform specific code for dealing with bitmap transport...
103 103
104 TransportDIB* RenderProcessImpl::CreateTransportDIB(size_t size) { 104 TransportDIB* RenderProcessImpl::CreateTransportDIB(size_t size) {
105 #if defined(OS_WIN) || defined(OS_LINUX) 105 #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_OPENBSD)
106 // Windows and Linux create transport DIBs inside the renderer 106 // Windows and Linux create transport DIBs inside the renderer
107 return TransportDIB::Create(size, transport_dib_next_sequence_number_++); 107 return TransportDIB::Create(size, transport_dib_next_sequence_number_++);
108 #elif defined(OS_MACOSX) // defined(OS_WIN) || defined(OS_LINUX) 108 #elif defined(OS_MACOSX)
109 // Mac creates transport DIBs in the browser, so we need to do a sync IPC to 109 // Mac creates transport DIBs in the browser, so we need to do a sync IPC to
110 // get one. The TransportDIB is cached in the browser. 110 // get one. The TransportDIB is cached in the browser.
111 TransportDIB::Handle handle; 111 TransportDIB::Handle handle;
112 IPC::Message* msg = new ViewHostMsg_AllocTransportDIB(size, true, &handle); 112 IPC::Message* msg = new ViewHostMsg_AllocTransportDIB(size, true, &handle);
113 if (!main_thread()->Send(msg)) 113 if (!main_thread()->Send(msg))
114 return NULL; 114 return NULL;
115 if (handle.fd < 0) 115 if (handle.fd < 0)
116 return NULL; 116 return NULL;
117 return TransportDIB::Map(handle); 117 return TransportDIB::Map(handle);
118 #endif // defined(OS_MACOSX) 118 #endif // defined(OS_MACOSX)
(...skipping 14 matching lines...) Expand all
133 } 133 }
134 134
135 // ----------------------------------------------------------------------------- 135 // -----------------------------------------------------------------------------
136 136
137 137
138 skia::PlatformCanvas* RenderProcessImpl::GetDrawingCanvas( 138 skia::PlatformCanvas* RenderProcessImpl::GetDrawingCanvas(
139 TransportDIB** memory, const gfx::Rect& rect) { 139 TransportDIB** memory, const gfx::Rect& rect) {
140 int width = rect.width(); 140 int width = rect.width();
141 int height = rect.height(); 141 int height = rect.height();
142 const size_t stride = skia::PlatformCanvas::StrideForWidth(rect.width()); 142 const size_t stride = skia::PlatformCanvas::StrideForWidth(rect.width());
143 #if defined(OS_LINUX) 143 #if defined(OS_LINUX) || defined(OS_OPENBSD)
144 const size_t max_size = base::SysInfo::MaxSharedMemorySize(); 144 const size_t max_size = base::SysInfo::MaxSharedMemorySize();
145 #else 145 #else
146 const size_t max_size = 0; 146 const size_t max_size = 0;
147 #endif 147 #endif
148 148
149 // If the requested size is too big, reduce the height. Ideally we might like 149 // If the requested size is too big, reduce the height. Ideally we might like
150 // to reduce the width as well to make the size reduction more "balanced", but 150 // to reduce the width as well to make the size reduction more "balanced", but
151 // it rarely comes up in practice. 151 // it rarely comes up in practice.
152 if ((max_size != 0) && (height * stride > max_size)) 152 if ((max_size != 0) && (height * stride > max_size))
153 height = max_size / stride; 153 height = max_size / stride;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 } 229 }
230 230
231 void RenderProcessImpl::ClearTransportDIBCache() { 231 void RenderProcessImpl::ClearTransportDIBCache() {
232 for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) { 232 for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
233 if (shared_mem_cache_[i]) { 233 if (shared_mem_cache_[i]) {
234 FreeTransportDIB(shared_mem_cache_[i]); 234 FreeTransportDIB(shared_mem_cache_[i]);
235 shared_mem_cache_[i] = NULL; 235 shared_mem_cache_[i] = NULL;
236 } 236 }
237 } 237 }
238 } 238 }
OLDNEW
« no previous file with comments | « content/renderer/pepper_plugin_delegate_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698