native_handle_t早期版本中是overlay_handle_t;struct overlay_data_context_t {
    struct overlay_data_device_t device;
    /* our private state goes below here */
    int ctl_fd;
    int shared_fd;
..........
}
最后面那俩fd是干吗的?google也没有个注释  真叫人费解!
求大虾告知,或者告知哪里有相关资料查阅也可以

解决方案 »

  1.   

    lz这个是哪个版本的Android的?在我这个Android2.2(froyo)里,在overlay_data_context_t定义是这样的:struct overlay_data_context_t {
        struct overlay_data_device_t device;
        /* our private state goes below here */
        int control_shared_fd;//all overlay instances share the same control 
        int control_shared_size;
        int data_shared_fd;
        int data_shared_size;
        int width;
        int height;
        int32_t format;
        int num_buffer;//Number of buffers for overlay
        int queue_threshold;
        int buf_size;
        int buf_queued;
        OverlayAllocator *allocator;
        OVERLAY_BUFFER *overlay_buffer;
        overlay_control_shared_t  *control_shared;
        overlay_data_shared_t  *data_shared;
    };
    control_shared_fd和data_shared_fd应该对应于lz的那两个fd,
    从其注释和代码来看,应该是控制fd和数据fd。号称所有的overlay实例用滴是相同的控制fd和数据fd。如有不对的地方,还请多多指教。
      

  2.   

    楼上,我的是Android2.2(froyo)阿,我贴出来的是ti的overlay代码
      

  3.   

    这些都是HAL的数据结构。HAL是用C写的,但是思想是C++的,熟悉面向对象的方法的话,理解起来还好。
      

  4.   


    我贴的是freescale的代码,哈哈。完全同意ls滴观点。另外,偶在看 韩超, 梁泉的《Android系统原理及开发要点详解》,就是书使用的Android版本有些低,先老扫扫盲,有需要的时候再看看代码,必要的时候再来论坛上请教下大虾。
      

  5.   

    看注释应该是只有control_shared_fd是相同的吧?data_shared_fd可以不同吧我的理解是这样  你看呢?
      

  6.   

    to susemm:我下的2.2杂没有freescale的overlay阿?我2.2上面只有ti的下了个2。3的代码,overlay只有ti和三星的。 三星的也是写的光秃秃的/* A separate instance is created per overlay data side user*/
    struct overlay_data_context_t {
        struct overlay_data_device_t device;
        /* our private state goes below here */
        int ctl_fd;
        int shared_fd;
      

  7.   


    data_shared_fd是从ashmem_create_region("overlay_data", size)创建的,也应该是相同的。
    这些都是硬件相关的代码,各个板子会有不同。
      

  8.   


    我这个代码是freescael imx51 evk开发板的代码,你那里自然不会有。