Spice代码分析(三)——red_worker: red_init
来源:互联网 发布:轻淘客 登录淘宝联盟 编辑:程序博客网 时间:2024/06/05 15:17
1) 处理QXL设备命令(如画,更新,光标处理等);
2) 处理从Dispatcher接收到的消息;
3) 显示和光标的通道创建、维护和通信;
4) 图像压缩(用quic, lz和 glz);
5) 视频流处理;
6) 用Cario或OpenGL渲染图形——画布(canvas)和表面(surface)等;
7) 命令环(ring)的操作;
8) 与spice client的显示和光标通道的信息交互
Red worker有很多处理,接下来阅读一些主要的方法,今天先看看red_init:
1.1Red_worker.c: red_init
static void red_init(RedWorker *worker, WorkerInitData *init_data)
dispatcher_get_recv_fd
从dispatcher那里拿来recv_fd作为red_worker之后可以发送消息给dispatcher的套接字(如在red_worker创建完display channel就通过这个套接字发消息给了dispatcher)
register_callbacks
注册一系列的回调函数用以处理dispatcher发过来的消息,dispatcher用dispatcher_send_message发送消息,每个消息都有类型,对应到具体的回调函数
ring_init(&worker->current_list)
初始化维护当前display上要画的Drawable对象的环
image_surface_init(worker)
初始化Image surface函数指针
drawables_init
初始化1000个Drawable对象
cursor_items_init
初始化100个光标对象
red_init_streams
初始化50个流媒体缓冲区
worker->poll_fds[0].fd = worker->channel; worker->poll_fds[0].events = POLLIN; worker->watches[0].watch_func = handle_dev_input;
设置第一个网络事件监听dispatcher发送过来的时间,处理函数为 handle_dev_input
red_memslot_info_init
初始化内存槽相关参数
spice_timer_queue_create
创建定时器队列,之后在处理视频流的地方要用到
write_message
向Dispatcher发送 RED_WORKER_MESSAGE_READY消息,告知red_worker初始化完成
- Spice代码分析(三)——red_worker: red_init
- Spice代码分析(三)——red_worker: red_init
- Spice代码分析(三)——red_worker: red_init
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- spice server qxl red_worker_main()代码分析
- lvm代码分析(三)
- IpMsg代码分析(三)
- 虚拟桌面项目——spice
- android事件分析(三)——在分析的时候用的代码
- HEVC码率控制算法研究与HM相应代码分析(三)——算法及代码分析
- spice 协议代码 client入口
- spice 协议相关分析总结
- spice协议详解(三):spice架构和通信
- JSpider学习三 —— 启动代码分析
- Spice 分析(1) – 构建 Spice 开发环境
- spice
- mysql group by用法
- spring mvc中org.springframework.web.servlet.DispatcherServlet类
- HDU--1004 -- Let the Balloon Rise [水] [字符串]
- Apache的SVN库(库中含有很多apache的开源项目,接近200个)
- Android自定义View之一
- Spice代码分析(三)——red_worker: red_init
- 编程竞赛技巧:Meet in the middle
- 2013年华为编程大赛上机题
- Spring MVC 3.2 技术预览(一):Servlet 3介绍,异步支持
- c#
- access 标准表达式中数据类型不匹配
- Service与Android系统实现(1)-- 应用程序里的Service (三)
- keygoe摘要--deviceID
- JavaScript判断密码强度