From c7c72810d03a2bf5d62529b56c788c7357c838da Mon Sep 17 00:00:00 2001 From: Shubhraprakash Das Date: Tue, 18 Jan 2011 17:59:30 -0700 Subject: [PATCH] libgralloc-qsd8k: Port part of change Ice6a7c28 Port over part of change Ice6a7c28 that frees ashmem memory. Change-Id: I467617f3bc35a0e448fbf41207853e669aed657a --- gpu.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gpu.cpp b/gpu.cpp index a2ccd16..6816cc5 100644 --- a/gpu.cpp +++ b/gpu.cpp @@ -335,6 +335,16 @@ int gpu_context_t::free_impl(private_handle_t const* hnd) { pmem_allocator = &pmemAllocator; } else if (hnd->flags & private_handle_t::PRIV_FLAGS_USES_PMEM_ADSP) { pmem_allocator = &pmemAdspAllocator; + } else if (hnd->flags & private_handle_t::PRIV_FLAGS_USES_ASHMEM) { + // free ashmem + if (hnd->fd >= 0) { + if (hnd->base) { + int err = munmap((void*)hnd->base, hnd->size); + LOGE_IF(err<0, "ASHMEM_UNMAP failed (%s), " + "fd=%d, sub.offset=%d, sub.size=%d", + strerror(errno), hnd->fd, hnd->offset, hnd->size); + } + } } if (pmem_allocator) { pmem_allocator->free_pmem_buffer(hnd->size, (void*)hnd->base,