BufferMapper* DisplayPlane::mapBuffer(DataBuffer *buffer) { BufferManager *bm = Hwcomposer::getInstance().getBufferManager(); // invalidate buffer cache if cache is full if ((int)mDataBuffers.size() >= mCacheCapacity) { invalidateBufferCache(); } BufferMapper *mapper = bm->map(*buffer); if (!mapper) { ELOGTRACE("failed to map buffer"); return NULL; } // add it to data buffers ssize_t index = mDataBuffers.add(buffer->getKey(), mapper); if (index < 0) { ELOGTRACE("failed to add mapper"); bm->unmap(mapper); return NULL; } return mapper; }
bool DisplayPlane::reset() { // reclaim all allocated resources if (mDataBuffers.size() > 0) { invalidateBufferCache(); } if (mActiveBuffers.size() > 0) { invalidateActiveBuffers(); } return true; }
void DisplayPlane::deinitialize() { // invalidate cached data buffers if (mDataBuffers.size()) { // invalidateBufferCache will assert if object is not initialized // so invoking it only there is buffer to invalidate. invalidateBufferCache(); } // invalidate active buffers if (mActiveBuffers.size()) { invalidateActiveBuffers(); } mCurrentDataBuffer = 0; mInitialized = false; }
void OverlayPlaneBase::deinitialize() { if (mTTMBuffers.size()) { invalidateBufferCache(); } if (mActiveTTMBuffers.size() > 0) { invalidateActiveTTMBuffers(); } // delete back buffer for (int i = 0; i < OVERLAY_BACK_BUFFER_COUNT; i++) { if (mBackBuffer[i]) { deleteBackBuffer(i); mBackBuffer[i] = NULL; } } DEINIT_AND_DELETE_OBJ(mWsbm); DisplayPlane::deinitialize(); }