Merge "Fix CodecLooper queue block issue" into main am: 1f4ed7f4b2
Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2713913
Change-Id: If10a1abbdc71cda2bdd3e668118f5f8cb83f20b6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 0adc14f..ea13989 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -2333,9 +2333,12 @@
void CCodec::onWorkDone(std::list<std::unique_ptr<C2Work>> &workItems) {
if (!workItems.empty()) {
Mutexed<std::list<std::unique_ptr<C2Work>>>::Locked queue(mWorkDoneQueue);
+ bool shouldPost = queue->empty();
queue->splice(queue->end(), workItems);
+ if (shouldPost) {
+ (new AMessage(kWhatWorkDone, this))->post();
+ }
}
- (new AMessage(kWhatWorkDone, this))->post();
}
void CCodec::onInputBufferDone(uint64_t frameIndex, size_t arrayIndex) {