| OLD | NEW |
| 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_wrappers.h" |
| 7 #include "base/thread.h" | 8 #include "base/thread.h" |
| 8 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/renderer_host/render_process_host.h" | 10 #include "chrome/browser/renderer_host/render_process_host.h" |
| 10 #include "chrome/browser/renderer_host/render_view_host.h" | 11 #include "chrome/browser/renderer_host/render_view_host.h" |
| 11 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" | 12 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" |
| 12 #include "chrome/common/render_messages.h" | 13 #include "chrome/common/render_messages.h" |
| 13 | 14 |
| 14 // A Task used with InvokeLater that we hold a pointer to in pending_paints_. | 15 // A Task used with InvokeLater that we hold a pointer to in pending_paints_. |
| 15 // Instances are deleted by MessageLoop after it calls their Run method. | 16 // Instances are deleted by MessageLoop after it calls their Run method. |
| 16 class RenderWidgetHelper::PaintMsgProxy : public Task { | 17 class RenderWidgetHelper::PaintMsgProxy : public Task { |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 allocated_dibs_[shared_memory->id()] = dup(result->fd); | 305 allocated_dibs_[shared_memory->id()] = dup(result->fd); |
| 305 } | 306 } |
| 306 | 307 |
| 307 void RenderWidgetHelper::FreeTransportDIB(TransportDIB::Id dib_id) { | 308 void RenderWidgetHelper::FreeTransportDIB(TransportDIB::Id dib_id) { |
| 308 AutoLock locked(allocated_dibs_lock_); | 309 AutoLock locked(allocated_dibs_lock_); |
| 309 | 310 |
| 310 const std::map<TransportDIB::Id, int>::iterator | 311 const std::map<TransportDIB::Id, int>::iterator |
| 311 i = allocated_dibs_.find(dib_id); | 312 i = allocated_dibs_.find(dib_id); |
| 312 | 313 |
| 313 if (i != allocated_dibs_.end()) { | 314 if (i != allocated_dibs_.end()) { |
| 314 close(i->second); | 315 HANDLE_EINTR(close(i->second)); |
| 315 allocated_dibs_.erase(i); | 316 allocated_dibs_.erase(i); |
| 316 } else { | 317 } else { |
| 317 DLOG(WARNING) << "Renderer asked us to free unknown transport DIB"; | 318 DLOG(WARNING) << "Renderer asked us to free unknown transport DIB"; |
| 318 } | 319 } |
| 319 } | 320 } |
| 320 | 321 |
| 321 void RenderWidgetHelper::ClearAllocatedDIBs() { | 322 void RenderWidgetHelper::ClearAllocatedDIBs() { |
| 322 for (std::map<TransportDIB::Id, int>::iterator | 323 for (std::map<TransportDIB::Id, int>::iterator |
| 323 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) { | 324 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) { |
| 324 close(i->second); | 325 HANDLE_EINTR(close(i->second)); |
| 325 } | 326 } |
| 326 | 327 |
| 327 allocated_dibs_.clear(); | 328 allocated_dibs_.clear(); |
| 328 } | 329 } |
| 329 #endif | 330 #endif |
| OLD | NEW |