Lines Matching refs:mCore

24 #define VALIDATE_CONSISTENCY() do { mCore->validateConsistencyLocked(); } while (0)
48 mCore(core), in BufferQueueProducer()
66 Mutex::Autolock lock(mCore->mMutex); in requestBuffer()
68 if (mCore->mIsAbandoned) { in requestBuffer()
73 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in requestBuffer()
101 Mutex::Autolock lock(mCore->mMutex); in setMaxDequeuedBufferCount()
102 mCore->waitWhileAllocatingLocked(); in setMaxDequeuedBufferCount()
104 if (mCore->mIsAbandoned) { in setMaxDequeuedBufferCount()
110 if (maxDequeuedBuffers == mCore->mMaxDequeuedBufferCount) { in setMaxDequeuedBufferCount()
117 for (int s : mCore->mActiveBuffers) { in setMaxDequeuedBufferCount()
129 int bufferCount = mCore->getMinUndequeuedBufferCountLocked(); in setMaxDequeuedBufferCount()
138 const int minBufferSlots = mCore->getMinMaxBufferCountLocked(); in setMaxDequeuedBufferCount()
145 if (bufferCount > mCore->mMaxBufferCount) { in setMaxDequeuedBufferCount()
149 mCore->mMaxBufferCount, mCore->mMaxAcquiredBufferCount, in setMaxDequeuedBufferCount()
150 mCore->mAsyncMode, mCore->mDequeueBufferCannotBlock); in setMaxDequeuedBufferCount()
154 int delta = maxDequeuedBuffers - mCore->mMaxDequeuedBufferCount; in setMaxDequeuedBufferCount()
155 if (!mCore->adjustAvailableSlotsLocked(delta)) { in setMaxDequeuedBufferCount()
158 mCore->mMaxDequeuedBufferCount = maxDequeuedBuffers; in setMaxDequeuedBufferCount()
161 listener = mCore->mConsumerListener; in setMaxDequeuedBufferCount()
163 mCore->mDequeueCondition.broadcast(); in setMaxDequeuedBufferCount()
180 Mutex::Autolock lock(mCore->mMutex); in setAsyncMode()
181 mCore->waitWhileAllocatingLocked(); in setAsyncMode()
183 if (mCore->mIsAbandoned) { in setAsyncMode()
188 if (async == mCore->mAsyncMode) { in setAsyncMode()
192 if ((mCore->mMaxAcquiredBufferCount + mCore->mMaxDequeuedBufferCount + in setAsyncMode()
193 (async || mCore->mDequeueBufferCannotBlock ? 1 : 0)) > in setAsyncMode()
194 mCore->mMaxBufferCount) { in setAsyncMode()
198 mCore->mMaxBufferCount, mCore->mMaxAcquiredBufferCount, in setAsyncMode()
199 mCore->mMaxDequeuedBufferCount, in setAsyncMode()
200 mCore->mDequeueBufferCannotBlock); in setAsyncMode()
204 int delta = mCore->getMaxBufferCountLocked(async, in setAsyncMode()
205 mCore->mDequeueBufferCannotBlock, mCore->mMaxBufferCount) in setAsyncMode()
206 - mCore->getMaxBufferCountLocked(); in setAsyncMode()
208 if (!mCore->adjustAvailableSlotsLocked(delta)) { in setAsyncMode()
213 mCore->mAsyncMode = async; in setAsyncMode()
215 mCore->mDequeueCondition.broadcast(); in setAsyncMode()
217 listener = mCore->mConsumerListener; in setAsyncMode()
229 if (mCore->mFreeBuffers.empty()) { in getFreeBufferLocked()
232 int slot = mCore->mFreeBuffers.front(); in getFreeBufferLocked()
233 mCore->mFreeBuffers.pop_front(); in getFreeBufferLocked()
238 if (mCore->mFreeSlots.empty()) { in getFreeSlotLocked()
241 int slot = *(mCore->mFreeSlots.begin()); in getFreeSlotLocked()
242 mCore->mFreeSlots.erase(slot); in getFreeSlotLocked()
252 if (mCore->mIsAbandoned) { in waitForFreeSlotThenRelock()
259 for (int s : mCore->mActiveBuffers) { in waitForFreeSlotThenRelock()
271 if (mCore->mBufferHasBeenQueued && in waitForFreeSlotThenRelock()
272 dequeuedCount >= mCore->mMaxDequeuedBufferCount) { in waitForFreeSlotThenRelock()
274 "(%d)", callerString, mCore->mMaxDequeuedBufferCount); in waitForFreeSlotThenRelock()
284 const int maxBufferCount = mCore->getMaxBufferCountLocked(); in waitForFreeSlotThenRelock()
285 bool tooManyBuffers = mCore->mQueue.size() in waitForFreeSlotThenRelock()
289 mCore->mQueue.size()); in waitForFreeSlotThenRelock()
293 if (mCore->mSharedBufferMode && mCore->mSharedBufferSlot != in waitForFreeSlotThenRelock()
295 *found = mCore->mSharedBufferSlot; in waitForFreeSlotThenRelock()
302 } else if (mCore->mAllowAllocation) { in waitForFreeSlotThenRelock()
329 if ((mCore->mDequeueBufferCannotBlock || mCore->mAsyncMode) && in waitForFreeSlotThenRelock()
330 (acquiredCount <= mCore->mMaxAcquiredBufferCount)) { in waitForFreeSlotThenRelock()
334 status_t result = mCore->mDequeueCondition.waitRelative( in waitForFreeSlotThenRelock()
335 mCore->mMutex, mDequeueTimeout); in waitForFreeSlotThenRelock()
340 mCore->mDequeueCondition.wait(mCore->mMutex); in waitForFreeSlotThenRelock()
354 Mutex::Autolock lock(mCore->mMutex); in dequeueBuffer()
355 mConsumerName = mCore->mConsumerName; in dequeueBuffer()
357 if (mCore->mIsAbandoned) { in dequeueBuffer()
362 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in dequeueBuffer()
382 Mutex::Autolock lock(mCore->mMutex); in dequeueBuffer()
383 mCore->waitWhileAllocatingLocked(); in dequeueBuffer()
386 format = mCore->mDefaultBufferFormat; in dequeueBuffer()
390 usage |= mCore->mConsumerUsageBits; in dequeueBuffer()
394 width = mCore->mDefaultWidth; in dequeueBuffer()
395 height = mCore->mDefaultHeight; in dequeueBuffer()
418 if (!mCore->mAllowAllocation) { in dequeueBuffer()
421 if (mCore->mSharedBufferSlot == found) { in dequeueBuffer()
426 mCore->mFreeSlots.insert(found); in dequeueBuffer()
427 mCore->clearBufferSlotLocked(found); in dequeueBuffer()
435 if (mCore->mSharedBufferSlot == found && in dequeueBuffer()
444 if (mCore->mSharedBufferSlot != found) { in dequeueBuffer()
445 mCore->mActiveBuffers.insert(found); in dequeueBuffer()
464 mCore->mBufferAge = 0; in dequeueBuffer()
465 mCore->mIsAllocating = true; in dequeueBuffer()
471 mCore->mBufferAge = in dequeueBuffer()
472 mCore->mFrameCounter + 1 - mSlots[found].mFrameNumber; in dequeueBuffer()
476 mCore->mBufferAge); in dequeueBuffer()
488 *outFence = (mCore->mSharedBufferMode && in dequeueBuffer()
489 mCore->mSharedBufferSlot == found) ? in dequeueBuffer()
496 if (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == in dequeueBuffer()
498 mCore->mSharedBufferSlot = found; in dequeueBuffer()
512 Mutex::Autolock lock(mCore->mMutex); in dequeueBuffer()
514 if (error == NO_ERROR && !mCore->mIsAbandoned) { in dequeueBuffer()
515 graphicBuffer->setGenerationNumber(mCore->mGenerationNumber); in dequeueBuffer()
519 mCore->mIsAllocating = false; in dequeueBuffer()
520 mCore->mIsAllocatingCondition.broadcast(); in dequeueBuffer()
523 mCore->mFreeSlots.insert(*outSlot); in dequeueBuffer()
524 mCore->clearBufferSlotLocked(*outSlot); in dequeueBuffer()
529 if (mCore->mIsAbandoned) { in dequeueBuffer()
530 mCore->mFreeSlots.insert(*outSlot); in dequeueBuffer()
531 mCore->clearBufferSlotLocked(*outSlot); in dequeueBuffer()
576 Mutex::Autolock lock(mCore->mMutex); in detachBuffer()
578 if (mCore->mIsAbandoned) { in detachBuffer()
583 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in detachBuffer()
588 if (mCore->mSharedBufferMode || mCore->mSharedBufferSlot == slot) { in detachBuffer()
608 mCore->mActiveBuffers.erase(slot); in detachBuffer()
609 mCore->mFreeSlots.insert(slot); in detachBuffer()
610 mCore->clearBufferSlotLocked(slot); in detachBuffer()
611 mCore->mDequeueCondition.broadcast(); in detachBuffer()
613 listener = mCore->mConsumerListener; in detachBuffer()
637 Mutex::Autolock lock(mCore->mMutex); in detachNextBuffer()
639 if (mCore->mIsAbandoned) { in detachNextBuffer()
644 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in detachNextBuffer()
649 if (mCore->mSharedBufferMode) { in detachNextBuffer()
655 mCore->waitWhileAllocatingLocked(); in detachNextBuffer()
657 if (mCore->mFreeBuffers.empty()) { in detachNextBuffer()
661 int found = mCore->mFreeBuffers.front(); in detachNextBuffer()
662 mCore->mFreeBuffers.remove(found); in detachNextBuffer()
663 mCore->mFreeSlots.insert(found); in detachNextBuffer()
669 mCore->clearBufferSlotLocked(found); in detachNextBuffer()
671 listener = mCore->mConsumerListener; in detachNextBuffer()
693 Mutex::Autolock lock(mCore->mMutex); in attachBuffer()
695 if (mCore->mIsAbandoned) { in attachBuffer()
700 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in attachBuffer()
705 if (mCore->mSharedBufferMode) { in attachBuffer()
710 if (buffer->getGenerationNumber() != mCore->mGenerationNumber) { in attachBuffer()
713 mCore->mGenerationNumber); in attachBuffer()
717 mCore->waitWhileAllocatingLocked(); in attachBuffer()
744 mCore->mActiveBuffers.insert(found); in attachBuffer()
793 Mutex::Autolock lock(mCore->mMutex); in queueBuffer()
795 if (mCore->mIsAbandoned) { in queueBuffer()
800 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in queueBuffer()
821 if (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == in queueBuffer()
823 mCore->mSharedBufferSlot = slot; in queueBuffer()
829 slot, mCore->mFrameCounter + 1, requestedPresentTimestamp, in queueBuffer()
846 dataSpace = mCore->mDefaultBufferDataSpace; in queueBuffer()
854 ++mCore->mFrameCounter; in queueBuffer()
855 currentFrameNumber = mCore->mFrameCounter; in queueBuffer()
873 item.mIsDroppable = mCore->mAsyncMode || in queueBuffer()
874 mCore->mDequeueBufferCannotBlock || in queueBuffer()
875 (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == slot); in queueBuffer()
878 item.mAutoRefresh = mCore->mSharedBufferMode && mCore->mAutoRefresh; in queueBuffer()
883 if (mCore->mSharedBufferMode) { in queueBuffer()
884 mCore->mSharedBufferCache.crop = crop; in queueBuffer()
885 mCore->mSharedBufferCache.transform = transform; in queueBuffer()
886 mCore->mSharedBufferCache.scalingMode = static_cast<uint32_t>( in queueBuffer()
888 mCore->mSharedBufferCache.dataspace = dataSpace; in queueBuffer()
892 if (mCore->mQueue.empty()) { in queueBuffer()
895 mCore->mQueue.push_back(item); in queueBuffer()
896 frameAvailableListener = mCore->mConsumerListener; in queueBuffer()
900 const BufferItem& last = mCore->mQueue.itemAt( in queueBuffer()
901 mCore->mQueue.size() - 1); in queueBuffer()
910 if (!mCore->mSharedBufferMode && in queueBuffer()
916 mCore->mActiveBuffers.erase(last.mSlot); in queueBuffer()
917 mCore->mFreeBuffers.push_back(last.mSlot); in queueBuffer()
923 mCore->mQueue.editItemAt(mCore->mQueue.size() - 1) = item; in queueBuffer()
924 frameReplacedListener = mCore->mConsumerListener; in queueBuffer()
926 mCore->mQueue.push_back(item); in queueBuffer()
927 frameAvailableListener = mCore->mConsumerListener; in queueBuffer()
931 mCore->mBufferHasBeenQueued = true; in queueBuffer()
932 mCore->mDequeueCondition.broadcast(); in queueBuffer()
933 mCore->mLastQueuedSlot = slot; in queueBuffer()
935 output->width = mCore->mDefaultWidth; in queueBuffer()
936 output->height = mCore->mDefaultHeight; in queueBuffer()
937 output->transformHint = mCore->mTransformHint; in queueBuffer()
938 output->numPendingBuffers = static_cast<uint32_t>(mCore->mQueue.size()); in queueBuffer()
939 output->nextFrameNumber = mCore->mFrameCounter + 1; in queueBuffer()
941 ATRACE_INT(mCore->mConsumerName.string(), in queueBuffer()
942 static_cast<int32_t>(mCore->mQueue.size())); in queueBuffer()
943 mCore->mOccupancyTracker.registerOccupancyChange(mCore->mQueue.size()); in queueBuffer()
979 connectedApi = mCore->mConnectedApi; in queueBuffer()
1015 Mutex::Autolock lock(mCore->mMutex); in cancelBuffer()
1017 if (mCore->mIsAbandoned) { in cancelBuffer()
1022 if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in cancelBuffer()
1027 if (mCore->mSharedBufferMode) { in cancelBuffer()
1049 if (!mCore->mSharedBufferMode && mSlots[slot].mBufferState.isFree()) { in cancelBuffer()
1055 mCore->mActiveBuffers.erase(slot); in cancelBuffer()
1056 mCore->mFreeBuffers.push_back(slot); in cancelBuffer()
1060 mCore->mDequeueCondition.broadcast(); in cancelBuffer()
1068 Mutex::Autolock lock(mCore->mMutex); in query()
1075 if (mCore->mIsAbandoned) { in query()
1083 value = static_cast<int32_t>(mCore->mDefaultWidth); in query()
1086 value = static_cast<int32_t>(mCore->mDefaultHeight); in query()
1089 value = static_cast<int32_t>(mCore->mDefaultBufferFormat); in query()
1096 value = mCore->getMinUndequeuedBufferCountLocked(); in query()
1102 value = (mCore->mQueue.size() > 1); in query()
1105 value = static_cast<int32_t>(mCore->mConsumerUsageBits); in query()
1108 value = static_cast<int32_t>(mCore->mDefaultBufferDataSpace); in query()
1111 if (mCore->mBufferAge > INT32_MAX) { in query()
1114 value = static_cast<int32_t>(mCore->mBufferAge); in query()
1118 value = static_cast<int32_t>(mCore->mConsumerIsProtected); in query()
1132 Mutex::Autolock lock(mCore->mMutex); in connect()
1133 mConsumerName = mCore->mConsumerName; in connect()
1137 if (mCore->mIsAbandoned) { in connect()
1142 if (mCore->mConsumerListener == NULL) { in connect()
1152 if (mCore->mConnectedApi != BufferQueueCore::NO_CONNECTED_API) { in connect()
1154 mCore->mConnectedApi, api); in connect()
1158 int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, in connect()
1160 mCore->mConsumerControlledByApp && producerControlledByApp : false, in connect()
1161 mCore->mMaxBufferCount) - in connect()
1162 mCore->getMaxBufferCountLocked(); in connect()
1163 if (!mCore->adjustAvailableSlotsLocked(delta)) { in connect()
1175 mCore->mConnectedApi = api; in connect()
1177 output->width = mCore->mDefaultWidth; in connect()
1178 output->height = mCore->mDefaultHeight; in connect()
1179 output->transformHint = mCore->mTransformHint; in connect()
1181 static_cast<uint32_t>(mCore->mQueue.size()); in connect()
1182 output->nextFrameNumber = mCore->mFrameCounter + 1; in connect()
1195 mCore->mLinkedToDeath = listener; in connect()
1198 mCore->mConnectedProducerListener = listener; in connect()
1207 mCore->mConnectedPid = IPCThreadState::self()->getCallingPid(); in connect()
1208 mCore->mBufferHasBeenQueued = false; in connect()
1209 mCore->mDequeueBufferCannotBlock = false; in connect()
1211 mCore->mDequeueBufferCannotBlock = in connect()
1212 mCore->mConsumerControlledByApp && producerControlledByApp; in connect()
1215 mCore->mAllowAllocation = true; in connect()
1227 Mutex::Autolock lock(mCore->mMutex); in disconnect()
1230 if (IPCThreadState::self()->getCallingPid() != mCore->mConnectedPid) { in disconnect()
1236 mCore->waitWhileAllocatingLocked(); in disconnect()
1238 if (mCore->mIsAbandoned) { in disconnect()
1245 if (mCore->mConnectedApi == NATIVE_WINDOW_API_MEDIA) { in disconnect()
1248 api = mCore->mConnectedApi; in disconnect()
1261 if (mCore->mConnectedApi == api) { in disconnect()
1262 mCore->freeAllBuffersLocked(); in disconnect()
1265 if (mCore->mLinkedToDeath != NULL) { in disconnect()
1267 IInterface::asBinder(mCore->mLinkedToDeath); in disconnect()
1273 mCore->mSharedBufferSlot = in disconnect()
1275 mCore->mLinkedToDeath = NULL; in disconnect()
1276 mCore->mConnectedProducerListener = NULL; in disconnect()
1277 mCore->mConnectedApi = BufferQueueCore::NO_CONNECTED_API; in disconnect()
1278 mCore->mConnectedPid = -1; in disconnect()
1279 mCore->mSidebandStream.clear(); in disconnect()
1280 mCore->mDequeueCondition.broadcast(); in disconnect()
1281 listener = mCore->mConsumerListener; in disconnect()
1282 } else if (mCore->mConnectedApi == BufferQueueCore::NO_CONNECTED_API) { in disconnect()
1287 "(cur=%d req=%d)", mCore->mConnectedApi, api); in disconnect()
1310 Mutex::Autolock _l(mCore->mMutex); in setSidebandStream()
1311 mCore->mSidebandStream = stream; in setSidebandStream()
1312 listener = mCore->mConsumerListener; in setSidebandStream()
1331 Mutex::Autolock lock(mCore->mMutex); in allocateBuffers()
1332 mCore->waitWhileAllocatingLocked(); in allocateBuffers()
1334 if (!mCore->mAllowAllocation) { in allocateBuffers()
1340 newBufferCount = mCore->mFreeSlots.size(); in allocateBuffers()
1345 allocWidth = width > 0 ? width : mCore->mDefaultWidth; in allocateBuffers()
1346 allocHeight = height > 0 ? height : mCore->mDefaultHeight; in allocateBuffers()
1347 allocFormat = format != 0 ? format : mCore->mDefaultBufferFormat; in allocateBuffers()
1348 allocUsage = usage | mCore->mConsumerUsageBits; in allocateBuffers()
1350 mCore->mIsAllocating = true; in allocateBuffers()
1364 Mutex::Autolock lock(mCore->mMutex); in allocateBuffers()
1365 mCore->mIsAllocating = false; in allocateBuffers()
1366 mCore->mIsAllocatingCondition.broadcast(); in allocateBuffers()
1373 Mutex::Autolock lock(mCore->mMutex); in allocateBuffers()
1374 uint32_t checkWidth = width > 0 ? width : mCore->mDefaultWidth; in allocateBuffers()
1375 uint32_t checkHeight = height > 0 ? height : mCore->mDefaultHeight; in allocateBuffers()
1377 format : mCore->mDefaultBufferFormat; in allocateBuffers()
1378 uint32_t checkUsage = usage | mCore->mConsumerUsageBits; in allocateBuffers()
1383 mCore->mIsAllocating = false; in allocateBuffers()
1384 mCore->mIsAllocatingCondition.broadcast(); in allocateBuffers()
1389 if (mCore->mFreeSlots.empty()) { in allocateBuffers()
1394 auto slot = mCore->mFreeSlots.begin(); in allocateBuffers()
1395 mCore->clearBufferSlotLocked(*slot); // Clean up the slot first in allocateBuffers()
1401 mCore->mFreeBuffers.push_front(*slot); in allocateBuffers()
1408 mCore->mFreeSlots.erase(slot); in allocateBuffers()
1411 mCore->mIsAllocating = false; in allocateBuffers()
1412 mCore->mIsAllocatingCondition.broadcast(); in allocateBuffers()
1422 Mutex::Autolock lock(mCore->mMutex); in allowAllocation()
1423 mCore->mAllowAllocation = allow; in allowAllocation()
1431 Mutex::Autolock lock(mCore->mMutex); in setGenerationNumber()
1432 mCore->mGenerationNumber = generationNumber; in setGenerationNumber()
1438 Mutex::Autolock lock(mCore->mMutex); in getConsumerName()
1447 Mutex::Autolock lock(mCore->mMutex); in setSharedBufferMode()
1449 mCore->mSharedBufferSlot = BufferQueueCore::INVALID_BUFFER_SLOT; in setSharedBufferMode()
1451 mCore->mSharedBufferMode = sharedBufferMode; in setSharedBufferMode()
1459 Mutex::Autolock lock(mCore->mMutex); in setAutoRefresh()
1461 mCore->mAutoRefresh = autoRefresh; in setAutoRefresh()
1469 Mutex::Autolock lock(mCore->mMutex); in setDequeueTimeout()
1470 int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, false, in setDequeueTimeout()
1471 mCore->mMaxBufferCount) - mCore->getMaxBufferCountLocked(); in setDequeueTimeout()
1472 if (!mCore->adjustAvailableSlotsLocked(delta)) { in setDequeueTimeout()
1479 mCore->mDequeueBufferCannotBlock = false; in setDequeueTimeout()
1490 Mutex::Autolock lock(mCore->mMutex); in getLastQueuedBuffer()
1491 if (mCore->mLastQueuedSlot == BufferItem::INVALID_BUFFER_SLOT) { in getLastQueuedBuffer()
1497 *outBuffer = mSlots[mCore->mLastQueuedSlot].mGraphicBuffer; in getLastQueuedBuffer()
1505 mSlots[mCore->mLastQueuedSlot].mGraphicBuffer, mLastQueuedCrop, in getLastQueuedBuffer()
1526 Mutex::Autolock lock(mCore->mMutex); in addAndGetFrameTimestamps()
1527 listener = mCore->mConsumerListener; in addAndGetFrameTimestamps()
1539 int api = mCore->mConnectedApi; in binderDied()
1546 *outId = mCore->mUniqueId; in getUniqueId()