diff options
author | 2022-01-07 09:33:19 -0800 | |
---|---|---|
committer | 2022-01-11 13:27:20 -0800 | |
commit | 9f0835e72949f7ed0d7df35960047931a2051a2c (patch) | |
tree | 09e39f98f397114dac14a6bd1eeb412770fcb591 /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | 1df8d38a3029b4f4da1a20a099936b37b510c4d1 (diff) |
SF: Make BufferData mockable
Expose GraphicBuffer properties through the BufferData
class so we can inject fake GraphicBuffers in transactions.
This is required to recreate layer state from transaction
traces without actually allocating buffers.
Test: compiles
Bug: 200284593
Change-Id: I74036cba1f544cbd045489fa5337d59ae4bdebcb
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 8db974ed0e..bd13c4169c 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3719,9 +3719,9 @@ bool SurfaceFlinger::checkTransactionCanLatchUnsignaled(const TransactionState& if (transaction.states.size() == 1) { const auto& state = transaction.states.begin()->state; if ((state.flags & ~layer_state_t::eBufferChanged) == 0 && - state.bufferData.flags.test(BufferData::BufferDataChange::fenceChanged) && - state.bufferData.acquireFence && - state.bufferData.acquireFence->getStatus() == Fence::Status::Unsignaled) { + state.bufferData->flags.test(BufferData::BufferDataChange::fenceChanged) && + state.bufferData->acquireFence && + state.bufferData->acquireFence->getStatus() == Fence::Status::Unsignaled) { ATRACE_NAME("transactionCanLatchUnsignaled"); return true; } @@ -3786,10 +3786,10 @@ bool SurfaceFlinger::transactionIsReadyToBeApplied( for (const ComposerState& state : states) { const layer_state_t& s = state.state; - const bool acquireFenceChanged = - s.bufferData.flags.test(BufferData::BufferDataChange::fenceChanged); - if (acquireFenceChanged && s.bufferData.acquireFence && !allowLatchUnsignaled && - s.bufferData.acquireFence->getStatus() == Fence::Status::Unsignaled) { + const bool acquireFenceChanged = s.bufferData && + s.bufferData->flags.test(BufferData::BufferDataChange::fenceChanged); + if (acquireFenceChanged && s.bufferData->acquireFence && !allowLatchUnsignaled && + s.bufferData->acquireFence->getStatus() == Fence::Status::Unsignaled) { ATRACE_NAME("fence unsignaled"); return false; } @@ -4420,7 +4420,7 @@ uint32_t SurfaceFlinger::setClientStateLocked(const FrameTimelineInfo& frameTime } if (what & layer_state_t::eBufferChanged && - layer->setBuffer(s.bufferData, postTime, desiredPresentTime, isAutoTimestamp, + layer->setBuffer(*s.bufferData, postTime, desiredPresentTime, isAutoTimestamp, dequeueBufferTimestamp, frameTimelineInfo)) { flags |= eTraversalNeeded; } else if (frameTimelineInfo.vsyncId != FrameTimelineInfo::INVALID_VSYNC_ID) { |