Android 12(S) 图像显示系统 - BufferQueue的工作流程(十)


题外话

疫情隔离在家,周末还在努力学习的我  .....


 

一、前言


上一篇文章中,有基本讲清楚Producer一端的处理逻辑,最后也留下了一个疑问:

Consumer是什么时候来消费数据的?他是自己主动来取的?还是收到了某种通知后再来处理的?

这篇文章,就带着这些疑问来开始分析源码。开头还是把这种流程图贴一下

 

二、Listener监听器的回调过程解析


生产者写完数据,把buffer还给buffer queue后,又是怎样通知消费者来使用的呢?

下面这些解析步骤,就是回答上面的问题

1. 生产者把数据写入buffer后,调用BufferQueueProducer::queueBuffer 入队列这个buffer;

2. 怎么去通知消费者来取呢? queueBuffer函数中会调用frameAvailableListener->onFrameAvailable(item);

3. frameAvailableListener是什么呢?frameAvailableListener = mCore->mConsumerListener;

4. mCore即为BufferQueueCore, BufferQueueCore中有成员 sp<IConsumerListener> mConsumerListener


5. BufferQueueCore::mConsumerListener 是什么时候设置的呢?

   

 

关注公众号 Android元宇宙 继续阅读相关文章!

posted on 2022-03-22 10:40  二的次方  阅读(4623)  评论(5编辑  收藏  举报