| Index: content/browser/renderer_host/render_process_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
| index 2b6ebf180a7e2bfd21fbfa1e196148216e51a1d4..d3c015ccf7ba8ee8f0b854df357062ddce3644eb 100644
|
| --- a/content/browser/renderer_host/render_process_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_process_host_impl.cc
|
| @@ -394,10 +394,6 @@ RenderProcessHostImpl::RenderProcessHostImpl(
|
| pending_views_(0),
|
| visible_widgets_(0),
|
| backgrounded_(true),
|
| - cached_dibs_cleaner_(FROM_HERE,
|
| - base::TimeDelta::FromSeconds(5),
|
| - this,
|
| - &RenderProcessHostImpl::ClearTransportDIBCache),
|
| is_initialized_(false),
|
| id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()),
|
| browser_context_(browser_context),
|
| @@ -491,7 +487,6 @@ RenderProcessHostImpl::~RenderProcessHostImpl() {
|
| queued_messages_.pop();
|
| }
|
|
|
| - ClearTransportDIBCache();
|
| UnregisterHost(GetID());
|
|
|
| if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| @@ -1262,69 +1257,6 @@ void RenderProcessHostImpl::DumpHandles() {
|
| #endif
|
| }
|
|
|
| -// This is a platform specific function for mapping a transport DIB given its id
|
| -TransportDIB* RenderProcessHostImpl::MapTransportDIB(
|
| - TransportDIB::Id dib_id) {
|
| -#if defined(OS_WIN)
|
| - // On Windows we need to duplicate the handle from the remote process
|
| - HANDLE section;
|
| - DuplicateHandle(GetHandle(), dib_id.handle, GetCurrentProcess(), §ion,
|
| - FILE_MAP_READ | FILE_MAP_WRITE,
|
| - FALSE, 0);
|
| - return TransportDIB::Map(section);
|
| -#elif defined(OS_ANDROID)
|
| - return TransportDIB::Map(dib_id);
|
| -#else
|
| - // On POSIX, the browser allocates all DIBs and keeps a file descriptor around
|
| - // for each.
|
| - return widget_helper_->MapTransportDIB(dib_id);
|
| -#endif
|
| -}
|
| -
|
| -TransportDIB* RenderProcessHostImpl::GetTransportDIB(
|
| - TransportDIB::Id dib_id) {
|
| - if (!TransportDIB::is_valid_id(dib_id))
|
| - return NULL;
|
| -
|
| - const std::map<TransportDIB::Id, TransportDIB*>::iterator
|
| - i = cached_dibs_.find(dib_id);
|
| - if (i != cached_dibs_.end()) {
|
| - cached_dibs_cleaner_.Reset();
|
| - return i->second;
|
| - }
|
| -
|
| - TransportDIB* dib = MapTransportDIB(dib_id);
|
| - if (!dib)
|
| - return NULL;
|
| -
|
| - if (cached_dibs_.size() >= MAX_MAPPED_TRANSPORT_DIBS) {
|
| - // Clean a single entry from the cache
|
| - std::map<TransportDIB::Id, TransportDIB*>::iterator smallest_iterator;
|
| - size_t smallest_size = std::numeric_limits<size_t>::max();
|
| -
|
| - for (std::map<TransportDIB::Id, TransportDIB*>::iterator
|
| - i = cached_dibs_.begin(); i != cached_dibs_.end(); ++i) {
|
| - if (i->second->size() <= smallest_size) {
|
| - smallest_iterator = i;
|
| - smallest_size = i->second->size();
|
| - }
|
| - }
|
| -
|
| - delete smallest_iterator->second;
|
| - cached_dibs_.erase(smallest_iterator);
|
| - }
|
| -
|
| - cached_dibs_[dib_id] = dib;
|
| - cached_dibs_cleaner_.Reset();
|
| - return dib;
|
| -}
|
| -
|
| -void RenderProcessHostImpl::ClearTransportDIBCache() {
|
| - STLDeleteContainerPairSecondPointers(
|
| - cached_dibs_.begin(), cached_dibs_.end());
|
| - cached_dibs_.clear();
|
| -}
|
| -
|
| bool RenderProcessHostImpl::Send(IPC::Message* msg) {
|
| TRACE_EVENT0("renderer_host", "RenderProcessHostImpl::Send");
|
| if (!channel_) {
|
| @@ -1895,8 +1827,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead) {
|
| iter.Advance();
|
| }
|
|
|
| - ClearTransportDIBCache();
|
| -
|
| render_process_host_mojo_.reset();
|
|
|
| // It's possible that one of the calls out to the observers might have caused
|
|
|