Android(安卓)4.2 JellyBean Graphic Component -- SurfaceFlinger 2
16lz
2021-01-25
3. SurfaceFlinger和EventThread的工作流程说明
在SF的readyToRun函数中,将通过MesssageQueue的setEventThread函数建立SF和ET的关系。看看代码吧: void MessageQueue::setEventThread(const sp<EventThread>& eventThread) { mEventThread = eventThread; mEvents = eventThread->createEventConnection(); mEventTube = mEvents->getDataChannel(); mLooper->addFd(mEventTube->getFd(), 0, ALOOPER_EVENT_INPUT, MessageQueue::cb_eventReceiver, this); } 也就是说,当EventThread有什么鸟事的时候,都会通过cb_eventReceiver回调到SF线程。 注意:JB以前,Android老是喜欢用pipe作为进程间通信的手段,现在改成socketpair了。这是一个很大的变化。所以,会网络编程的同学可以happy一下了。不会的淫,也无所谓,反正是把socket当pipe来使,都是IPC通信手段,你管它用得是什么呢! EventThread的requestSync被调用后,会触发EventThread的线程通过Connection发送一个消息给SF所在的线程,即刚才那个cb_eventReceiver被调用,图4是此后的工作流程。(SF系统现在变得也是磨磨唧唧了,不懂POSIX编程屌丝们,你们无论如何得花点功夫研究了。)更多相关文章
- android servicemanager与binder源码分析三------如何进入内核通
- Android开源项目发现--- 工具类依赖注入DI篇(持续更新)
- 疯狂android讲义---Configuration
- Android(安卓)c和c++函数调用堆栈分析
- Android(安卓)Camera HAL设计初步
- 推出Android原生开发工具包r16
- android 子线程 UI线程(主线程)通信
- Android必备的Java知识点
- android之widget详解