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

Side by Side Diff: chrome/browser/renderer_host/render_widget_helper.cc

Issue 6142009: Upating the app, ceee, chrome, ipc, media, and net directories to use the correct lock.h file. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Unified patch updating all references to the new base/synchronization/lock.h Created 9 years, 11 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/render_widget_helper.h" 5 #include "chrome/browser/renderer_host/render_widget_helper.h"
6 6
7 #include "base/eintr_wrapper.h" 7 #include "base/eintr_wrapper.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "chrome/browser/browser_thread.h" 9 #include "chrome/browser/browser_thread.h"
10 #include "chrome/browser/renderer_host/render_process_host.h" 10 #include "chrome/browser/renderer_host/render_process_host.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 bool RenderWidgetHelper::WaitForUpdateMsg(int render_widget_id, 97 bool RenderWidgetHelper::WaitForUpdateMsg(int render_widget_id,
98 const base::TimeDelta& max_delay, 98 const base::TimeDelta& max_delay,
99 IPC::Message* msg) { 99 IPC::Message* msg) {
100 base::TimeTicks time_start = base::TimeTicks::Now(); 100 base::TimeTicks time_start = base::TimeTicks::Now();
101 101
102 for (;;) { 102 for (;;) {
103 UpdateMsgProxy* proxy = NULL; 103 UpdateMsgProxy* proxy = NULL;
104 { 104 {
105 AutoLock lock(pending_paints_lock_); 105 base::AutoLock lock(pending_paints_lock_);
106 106
107 UpdateMsgProxyMap::iterator it = pending_paints_.find(render_widget_id); 107 UpdateMsgProxyMap::iterator it = pending_paints_.find(render_widget_id);
108 if (it != pending_paints_.end()) { 108 if (it != pending_paints_.end()) {
109 proxy = it->second; 109 proxy = it->second;
110 110
111 // Flag the proxy as cancelled so that when it is run as a task it will 111 // Flag the proxy as cancelled so that when it is run as a task it will
112 // do nothing. 112 // do nothing.
113 proxy->cancelled = true; 113 proxy->cancelled = true;
114 114
115 pending_paints_.erase(it); 115 pending_paints_.erase(it);
(...skipping 16 matching lines...) Expand all
132 } 132 }
133 133
134 return false; 134 return false;
135 } 135 }
136 136
137 void RenderWidgetHelper::DidReceiveUpdateMsg(const IPC::Message& msg) { 137 void RenderWidgetHelper::DidReceiveUpdateMsg(const IPC::Message& msg) {
138 int render_widget_id = msg.routing_id(); 138 int render_widget_id = msg.routing_id();
139 139
140 UpdateMsgProxy* proxy = NULL; 140 UpdateMsgProxy* proxy = NULL;
141 { 141 {
142 AutoLock lock(pending_paints_lock_); 142 base::AutoLock lock(pending_paints_lock_);
143 143
144 UpdateMsgProxyMap::value_type new_value(render_widget_id, NULL); 144 UpdateMsgProxyMap::value_type new_value(render_widget_id, NULL);
145 145
146 // We expect only a single PaintRect message at a time. Optimize for the 146 // We expect only a single PaintRect message at a time. Optimize for the
147 // case that we don't already have an entry by using the 'insert' method. 147 // case that we don't already have an entry by using the 'insert' method.
148 std::pair<UpdateMsgProxyMap::iterator, bool> result = 148 std::pair<UpdateMsgProxyMap::iterator, bool> result =
149 pending_paints_.insert(new_value); 149 pending_paints_.insert(new_value);
150 if (!result.second) { 150 if (!result.second) {
151 NOTREACHED() << "Unexpected PaintRect message!"; 151 NOTREACHED() << "Unexpected PaintRect message!";
152 return; 152 return;
153 } 153 }
154 154
155 result.first->second = (proxy = new UpdateMsgProxy(this, msg)); 155 result.first->second = (proxy = new UpdateMsgProxy(this, msg));
156 } 156 }
157 157
158 // Notify anyone waiting on the UI thread that there is a new entry in the 158 // Notify anyone waiting on the UI thread that there is a new entry in the
159 // proxy map. If they don't find the entry they are looking for, then they 159 // proxy map. If they don't find the entry they are looking for, then they
160 // will just continue waiting. 160 // will just continue waiting.
161 event_.Signal(); 161 event_.Signal();
162 162
163 // The proxy will be deleted when it is run as a task. 163 // The proxy will be deleted when it is run as a task.
164 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, proxy); 164 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, proxy);
165 } 165 }
166 166
167 void RenderWidgetHelper::OnDiscardUpdateMsg(UpdateMsgProxy* proxy) { 167 void RenderWidgetHelper::OnDiscardUpdateMsg(UpdateMsgProxy* proxy) {
168 const IPC::Message& msg = proxy->message; 168 const IPC::Message& msg = proxy->message;
169 169
170 // Remove the proxy from the map now that we are going to handle it normally. 170 // Remove the proxy from the map now that we are going to handle it normally.
171 { 171 {
172 AutoLock lock(pending_paints_lock_); 172 base::AutoLock lock(pending_paints_lock_);
173 173
174 UpdateMsgProxyMap::iterator it = pending_paints_.find(msg.routing_id()); 174 UpdateMsgProxyMap::iterator it = pending_paints_.find(msg.routing_id());
175 DCHECK(it != pending_paints_.end()); 175 DCHECK(it != pending_paints_.end());
176 DCHECK(it->second == proxy); 176 DCHECK(it->second == proxy);
177 177
178 pending_paints_.erase(it); 178 pending_paints_.erase(it);
179 } 179 }
180 } 180 }
181 181
182 void RenderWidgetHelper::OnDispatchUpdateMsg(UpdateMsgProxy* proxy) { 182 void RenderWidgetHelper::OnDispatchUpdateMsg(UpdateMsgProxy* proxy) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 269
270 void RenderWidgetHelper::OnCreateFullscreenWidgetOnUI( 270 void RenderWidgetHelper::OnCreateFullscreenWidgetOnUI(
271 int opener_id, int route_id, WebKit::WebPopupType popup_type) { 271 int opener_id, int route_id, WebKit::WebPopupType popup_type) {
272 RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id); 272 RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id);
273 if (host) 273 if (host)
274 host->CreateNewFullscreenWidget(route_id, popup_type); 274 host->CreateNewFullscreenWidget(route_id, popup_type);
275 } 275 }
276 276
277 #if defined(OS_MACOSX) 277 #if defined(OS_MACOSX)
278 TransportDIB* RenderWidgetHelper::MapTransportDIB(TransportDIB::Id dib_id) { 278 TransportDIB* RenderWidgetHelper::MapTransportDIB(TransportDIB::Id dib_id) {
279 AutoLock locked(allocated_dibs_lock_); 279 base::AutoLock locked(allocated_dibs_lock_);
280 280
281 const std::map<TransportDIB::Id, int>::iterator 281 const std::map<TransportDIB::Id, int>::iterator
282 i = allocated_dibs_.find(dib_id); 282 i = allocated_dibs_.find(dib_id);
283 if (i == allocated_dibs_.end()) 283 if (i == allocated_dibs_.end())
284 return NULL; 284 return NULL;
285 285
286 base::FileDescriptor fd(dup(i->second), true); 286 base::FileDescriptor fd(dup(i->second), true);
287 return TransportDIB::Map(fd); 287 return TransportDIB::Map(fd);
288 } 288 }
289 289
290 void RenderWidgetHelper::AllocTransportDIB( 290 void RenderWidgetHelper::AllocTransportDIB(
291 size_t size, bool cache_in_browser, TransportDIB::Handle* result) { 291 size_t size, bool cache_in_browser, TransportDIB::Handle* result) {
292 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); 292 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
293 if (!shared_memory->CreateAnonymous(size)) { 293 if (!shared_memory->CreateAnonymous(size)) {
294 result->fd = -1; 294 result->fd = -1;
295 result->auto_close = false; 295 result->auto_close = false;
296 return; 296 return;
297 } 297 }
298 298
299 shared_memory->GiveToProcess(0 /* pid, not needed */, result); 299 shared_memory->GiveToProcess(0 /* pid, not needed */, result);
300 300
301 if (cache_in_browser) { 301 if (cache_in_browser) {
302 // Keep a copy of the file descriptor around 302 // Keep a copy of the file descriptor around
303 AutoLock locked(allocated_dibs_lock_); 303 base::AutoLock locked(allocated_dibs_lock_);
304 allocated_dibs_[shared_memory->id()] = dup(result->fd); 304 allocated_dibs_[shared_memory->id()] = dup(result->fd);
305 } 305 }
306 } 306 }
307 307
308 void RenderWidgetHelper::FreeTransportDIB(TransportDIB::Id dib_id) { 308 void RenderWidgetHelper::FreeTransportDIB(TransportDIB::Id dib_id) {
309 AutoLock locked(allocated_dibs_lock_); 309 base::AutoLock locked(allocated_dibs_lock_);
310 310
311 const std::map<TransportDIB::Id, int>::iterator 311 const std::map<TransportDIB::Id, int>::iterator
312 i = allocated_dibs_.find(dib_id); 312 i = allocated_dibs_.find(dib_id);
313 313
314 if (i != allocated_dibs_.end()) { 314 if (i != allocated_dibs_.end()) {
315 if (HANDLE_EINTR(close(i->second)) < 0) 315 if (HANDLE_EINTR(close(i->second)) < 0)
316 PLOG(ERROR) << "close"; 316 PLOG(ERROR) << "close";
317 allocated_dibs_.erase(i); 317 allocated_dibs_.erase(i);
318 } else { 318 } else {
319 DLOG(WARNING) << "Renderer asked us to free unknown transport DIB"; 319 DLOG(WARNING) << "Renderer asked us to free unknown transport DIB";
320 } 320 }
321 } 321 }
322 322
323 void RenderWidgetHelper::ClearAllocatedDIBs() { 323 void RenderWidgetHelper::ClearAllocatedDIBs() {
324 for (std::map<TransportDIB::Id, int>::iterator 324 for (std::map<TransportDIB::Id, int>::iterator
325 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) { 325 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) {
326 if (HANDLE_EINTR(close(i->second)) < 0) 326 if (HANDLE_EINTR(close(i->second)) < 0)
327 PLOG(ERROR) << "close: " << i->first; 327 PLOG(ERROR) << "close: " << i->first;
328 } 328 }
329 329
330 allocated_dibs_.clear(); 330 allocated_dibs_.clear();
331 } 331 }
332 #endif 332 #endif
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/render_widget_helper.h ('k') | chrome/browser/safe_browsing/safe_browsing_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698