共 7 篇文章 |
|
Dequeue一个Buffer或queue一个Buffer。// dequeue a new buffer if (nativeWindow->dequeueBuffer(nativeWindow, &buffer, &fenceFd)== NO_ERROR) { sp fence(new Fence(fenceFd)); if(fence->wait(Fence::TIMEOUT_NEVER)) { nativeWindow->cancelBuffer(nativeWindow, buffer, ... 阅94 转0 评0 公众公开 17-03-06 13:43 |
回到preComposition函数,遍历所有的Layer对象,调用其onPreComposition函数来检测Layer层中的图像是否有变化。//查找需要更新的Layerfor (size_t i = 0, count = layers.size(); iconst sp& layer(layers[i]);if (layer->hasQueuedFrame()) {frameQueued = true;if (layer->shouldPresentNow(mPrimaryDispSync)) {layersWithQueuedF... 阅97 转1 评0 公众公开 17-03-01 17:34 |
我们先来看下loadFbHalModule函数,hw_get_module是HAl框架中装载HAL模块的函数int HWComposer::loadFbHalModule(){ hw_module_t const* module; int err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &module); if (err != 0) { ALOGE(''%s module not found'', GRALLOC_HARDWARE_MODULE_ID); return err; } return fram... 阅329 转0 评0 公众公开 17-03-01 17:31 |
Android实战技术:深入理解Android的RPC方式与AIDLUnderstanding ADILAIDL是一个接口描述文件,用于实现Android平台上面的RPC,aapt在编译的时候会自动根据规则生成用于IPC的接口和对象,而作为使用者只需要:1.在服务端Service实现接口;本质--脱去内衣其实AIDL的作用就是对Binder的二个方法:Binder.transact()和Binder.onTransact()进行封装... 阅432 转1 评0 公众公开 17-02-27 15:56 |
这里要特别说明一下,与ServiceManager类似,其他Service的客户端在得到Service的远程代理对象之后调用的所有方法都会转换成代理对象(BpXXXService)的transact()方法,经过BpBinder的传递,最终调用到IPCThreadState的transact()方法,在IPCThreadState的transact()内部将数据封装,而封装的过程就是把所有请求打包为BC_TRANSACTION消息发送到B... 阅77 转0 评0 公众公开 16-10-26 17:01 |
在一个简单的构造函数之后,就是这些接口函数的实现。看其中的红色字体部分,通过create()函数调用会创建一个 IMediaPlayer接口类的子类的对象,这个对象其实是MediaPlayerService::Client类(可以看一下 MediaPlayerService的定义)的对象实例,而MediaPlayerService::Client类是继承自 BnMediaPlayer类的,与BnMediaPlayerService类类似,BnM... 阅1 转自shaobin06... 公众公开 16-06-21 20:14 |