From 92c3b393275e967f37162b40b3438c5616328372 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 19 Apr 2010 19:09:03 -0700 Subject: fix [2599939] "cannot play video" after open/close a video player a dozen of times get rid off the MAP_ONCE flag is MemoryHeapBase (as well as it's functionality), this feature should not be used anymore. the software renderer was incorrectly using the default ctor which set MAP_ONCE, causing the leak. the software renderer itself is incorrectly used while coming back from sleep. Change-Id: I123621f8d140550b864f352bbcd8a5729db12b57 --- libs/binder/IMemory.cpp | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'libs/binder') diff --git a/libs/binder/IMemory.cpp b/libs/binder/IMemory.cpp index 6c1d225..bc8c412 100644 --- a/libs/binder/IMemory.cpp +++ b/libs/binder/IMemory.cpp @@ -46,7 +46,6 @@ public: virtual void binderDied(const wp& who); sp find_heap(const sp& binder); - void pin_heap(const sp& binder); void free_heap(const sp& binder); sp get_heap(const sp& binder); void dump_heaps(); @@ -100,13 +99,9 @@ private: static inline void dump_heaps() { gHeapCache->dump_heaps(); } - void inline pin_heap() const { - gHeapCache->pin_heap(const_cast(this)->asBinder()); - } void assertMapped() const; void assertReallyMapped() const; - void pinHeap() const; mutable volatile int32_t mHeapId; mutable void* mBase; @@ -320,11 +315,6 @@ void BpMemoryHeap::assertReallyMapped() const asBinder().get(), size, fd, strerror(errno)); close(fd); } else { - if (flags & MAP_ONCE) { - //LOGD("pinning heap (binder=%p, size=%d, fd=%d", - // asBinder().get(), size, fd); - pin_heap(); - } mSize = size; mFlags = flags; android_atomic_write(fd, &mHeapId); @@ -421,19 +411,6 @@ sp HeapCache::find_heap(const sp& binder) } } -void HeapCache::pin_heap(const sp& binder) -{ - Mutex::Autolock _l(mHeapCacheLock); - ssize_t i = mHeapCache.indexOfKey(binder); - if (i>=0) { - heap_info_t& info(mHeapCache.editValueAt(i)); - android_atomic_inc(&info.count); - binder->linkToDeath(this); - } else { - LOGE("pin_heap binder=%p not found!!!", binder.get()); - } -} - void HeapCache::free_heap(const sp& binder) { free_heap( wp(binder) ); } -- cgit v1.1