zoukankan      html  css  js  c++  java
  • SurfaceFlinger与Surface概述

    基本原理:

    SF一个Client对应一个app中的SurfaceComposerClient, 分别是Binder的n端和b端,主要用来CreateSurface

    一个app中有多个Activity,一个Activity一般有一个Surface(除SurfaceView,一个View就有一个Surface),这个Acitivity所有View都是画在这个Surface上的。

    App中的每个Surface对应SF中的每个Layer,因为SF为App创建Surface的时候,同时在SF端创建一个Layer。

    Layer里面有个一个BufferQueue,对应Surface中的一个mGraphicBufferProducer,分别是Binder中的n端和b端。主要方法是dequeueBuffer和queueBuffer,当app需要在surface上画图时,dequeueBuffer申请一个缓存,写入,然后queueBuffer送出缓存并且通知SF来合成。

    可以注意到,QueueBuffer和Surface都有一个BufferSlot数组,里面Buffer顺序是同步的,两个数组对应每一个元素指向同一个数据,这个数据也就是GraphicBuffer,应为这两个数组各自在两个进程中,所以这里是通过内存共享来实现。

  • 相关阅读:
    信息量
    MVC4的实战:排球计分(一)(综述)
    排球计分规则3.17
    观后感-----怎样成为一个高手
    本学期最后一个博客
    第五组作业
    个人作业
    第五组作业
    个人作业
    一周的总结
  • 原文地址:https://www.cnblogs.com/hushpa/p/6530905.html
Copyright © 2011-2022 走看看