diff options
Diffstat (limited to 'libs/ui/BufferMapper.cpp')
-rw-r--r-- | libs/ui/BufferMapper.cpp | 100 |
1 files changed, 11 insertions, 89 deletions
diff --git a/libs/ui/BufferMapper.cpp b/libs/ui/BufferMapper.cpp index 85a029bcc0d2..1a75c5d9acdf 100644 --- a/libs/ui/BufferMapper.cpp +++ b/libs/ui/BufferMapper.cpp @@ -17,14 +17,9 @@ #define LOG_TAG "BufferMapper" #include <stdint.h> -#include <unistd.h> -#include <fcntl.h> #include <errno.h> -#include <sys/types.h> -#include <sys/stat.h> #include <utils/Errors.h> -#include <utils/threads.h> #include <utils/Log.h> #include <ui/BufferMapper.h> @@ -34,12 +29,6 @@ #include <hardware/gralloc.h> -// --------------------------------------------------------------------------- -// enable mapping debugging -#define DEBUG_MAPPINGS 0 -// never remove mappings from the list -#define DEBUG_MAPPINGS_KEEP_ALL 0 -// --------------------------------------------------------------------------- namespace android { // --------------------------------------------------------------------------- @@ -57,34 +46,27 @@ BufferMapper::BufferMapper() } } -status_t BufferMapper::map(buffer_handle_t handle, void** addr, const void* id) +status_t BufferMapper::registerBuffer(buffer_handle_t handle) { - Mutex::Autolock _l(mLock); - status_t err = mAllocMod->map(mAllocMod, handle, addr); - LOGW_IF(err, "map(...) failed %d (%s)", err, strerror(-err)); -#if DEBUG_MAPPINGS - if (err == NO_ERROR) - logMapLocked(handle, id); -#endif + status_t err = mAllocMod->registerBuffer(mAllocMod, handle); + LOGW_IF(err, "registerBuffer(%p) failed %d (%s)", + handle, err, strerror(-err)); return err; } -status_t BufferMapper::unmap(buffer_handle_t handle, const void* id) +status_t BufferMapper::unregisterBuffer(buffer_handle_t handle) { - Mutex::Autolock _l(mLock); - status_t err = mAllocMod->unmap(mAllocMod, handle); - LOGW_IF(err, "unmap(...) failed %d (%s)", err, strerror(-err)); -#if DEBUG_MAPPINGS - if (err == NO_ERROR) - logUnmapLocked(handle, id); -#endif + status_t err = mAllocMod->unregisterBuffer(mAllocMod, handle); + LOGW_IF(err, "unregisterBuffer(%p) failed %d (%s)", + handle, err, strerror(-err)); return err; } -status_t BufferMapper::lock(buffer_handle_t handle, int usage, const Rect& bounds) +status_t BufferMapper::lock(buffer_handle_t handle, + int usage, const Rect& bounds, void** vaddr) { status_t err = mAllocMod->lock(mAllocMod, handle, usage, - bounds.left, bounds.top, bounds.width(), bounds.height()); + bounds.left, bounds.top, bounds.width(), bounds.height(), vaddr); LOGW_IF(err, "unlock(...) failed %d (%s)", err, strerror(-err)); return err; } @@ -96,65 +78,5 @@ status_t BufferMapper::unlock(buffer_handle_t handle) return err; } -void BufferMapper::logMapLocked(buffer_handle_t handle, const void* id) -{ - CallStack stack; - stack.update(2); - - map_info_t info; - info.id = id; - info.stack = stack; - - ssize_t index = mMapInfo.indexOfKey(handle); - if (index >= 0) { - Vector<map_info_t>& infos = mMapInfo.editValueAt(index); - infos.add(info); - } else { - Vector<map_info_t> infos; - infos.add(info); - mMapInfo.add(handle, infos); - } -} - -void BufferMapper::logUnmapLocked(buffer_handle_t handle, const void* id) -{ - ssize_t index = mMapInfo.indexOfKey(handle); - if (index < 0) { - LOGE("unmapping %p which doesn't exist in our map!", handle); - return; - } - - Vector<map_info_t>& infos = mMapInfo.editValueAt(index); - ssize_t count = infos.size(); - for (int i=0 ; i<count ; ) { - if (infos[i].id == id) { - infos.removeAt(i); - --count; - } else { - ++i; - } - } - if (count == 0) { - mMapInfo.removeItemsAt(index, 1); - } -} - -void BufferMapper::dump(buffer_handle_t handle) -{ - Mutex::Autolock _l(mLock); - ssize_t index = mMapInfo.indexOfKey(handle); - if (index < 0) { - LOGD("handle %p is not mapped through BufferMapper", handle); - return; - } - - const Vector<map_info_t>& infos = mMapInfo.valueAt(index); - ssize_t count = infos.size(); - for (int i=0 ; i<count ; i++) { - LOGD("#%d", i); - infos[i].stack.dump(); - } -} - // --------------------------------------------------------------------------- }; // namespace android |