android 4.2 dumpsys SurfaceFlinger 过程
2013-06-09 18:08
501 查看
class SurfaceFlinger : public BinderService<SurfaceFlinger>,
public BnSurfaceComposer,
private IBinder::DeathRecipient,
private Thread,
private HWComposer::EventHandler
class BnSurfaceComposer: public BnInterface<ISurfaceComposer>
template<typename INTERFACE>
class BnInterface : public INTERFACE, public BBinder
{
public:
virtual sp<IInterface> queryLocalInterface(const String16& _descriptor);
virtual const String16& getInterfaceDescriptor() const;
protected:
virtual IBinder* onAsBinder();
};
template<typename SERVICE>
class BinderService
{
public:
static status_t publish(bool allowIsolated = false) {
sp<IServiceManager> sm(defaultServiceManager());
return sm->addService(String16(SERVICE::getServiceName()), new SERVICE(), allowIsolated);
}
static void publishAndJoinThreadPool(bool allowIsolated = false) {
sp<IServiceManager> sm(defaultServiceManager());
sm->addService(String16(SERVICE::getServiceName()), new SERVICE(), allowIsolated);
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
static void instantiate() { publish(); }
static status_t shutdown() {
return NO_ERROR;
}
};
frameworks/native/libs/binder/IPCThreadState.cpp
/ALOGI("<<<< TRANSACT from pid %d restore pid %d uid %d\n",
// mCallingPid, origPid, origUid);
调式的时候也许用得到,知道从那个pid发出的消息
public BnSurfaceComposer,
private IBinder::DeathRecipient,
private Thread,
private HWComposer::EventHandler
class BnSurfaceComposer: public BnInterface<ISurfaceComposer>
template<typename INTERFACE>
class BnInterface : public INTERFACE, public BBinder
{
public:
virtual sp<IInterface> queryLocalInterface(const String16& _descriptor);
virtual const String16& getInterfaceDescriptor() const;
protected:
virtual IBinder* onAsBinder();
};
template<typename SERVICE>
class BinderService
{
public:
static status_t publish(bool allowIsolated = false) {
sp<IServiceManager> sm(defaultServiceManager());
return sm->addService(String16(SERVICE::getServiceName()), new SERVICE(), allowIsolated);
}
static void publishAndJoinThreadPool(bool allowIsolated = false) {
sp<IServiceManager> sm(defaultServiceManager());
sm->addService(String16(SERVICE::getServiceName()), new SERVICE(), allowIsolated);
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
static void instantiate() { publish(); }
static status_t shutdown() {
return NO_ERROR;
}
};
frameworks/native/libs/binder/IPCThreadState.cpp
/ALOGI("<<<< TRANSACT from pid %d restore pid %d uid %d\n",
// mCallingPid, origPid, origUid);
调式的时候也许用得到,知道从那个pid发出的消息
相关文章推荐
- 通过 dumpsys SurfaceFlinger 分析Android 系统图层
- [原]通过 dumpsys SurfaceFlinger 分析Android 系统图层
- 通过 dumpsys SurfaceFlinger 分析Android 系统图层
- Android SurfaceFlinger之SurfaceFlinger启动过程
- Android SurfaceFlinger之OpenGL库加载过程
- shell 脚本通过 dumpsys SurfaceFlinger --latency 数据计算 FPS 和评价流畅度。
- Android SurfaceFlinger服务的消息循环过程源码分析
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- dumpsys SurfaceFlinger
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- Android SurfaceFlinger服务代理对象获取过程源码分析
- (转)dumpsys surfaceflinger信息详解
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- [置顶] Android L SurfaceFlinger dump信息全解(1)
- 【Android】Android SurfaceFlinger之SurfaceFlinger启动过程
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- dumpsys SurfaceFlinger 的堆栈信息(调用关系)
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- Android 4.2 JellyBean Graphic Component -- SurfaceFlinger 1
- Android SurfaceFlinger服务的消息循环过程源码分析