Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1273920
  • 博文数量: 389
  • 博客积分: 2874
  • 博客等级: 少校
  • 技术积分: 3577
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 10:34
文章分类

全部博文(389)

文章存档

2020年(2)

2018年(39)

2017年(27)

2016年(3)

2015年(55)

2014年(92)

2013年(54)

2012年(53)

2011年(64)

分类: 虚拟化

2015-03-06 10:07:22

spice display_channel当然还是从qemu开始.

spice-core.c -> qemu_spice_init() -> spice-display.c -> qemu_spice_create_one_update() (从这里开始产生QXLCommand)

一系列的构造生产 SpiceUpdate(display update), 然后丢给队列传给 red_worker

QTAILQ_INSERT_TAIL(&ssd->updates, update, next);

red_worker.c -> flush_display_commands-> red_process_commands()  -> red_process_drawable 来消费这些ext_cmd

这里的判断需要多看上面提到qemu生成SpiceUpdate的code.

开源c里面的marshall大部分是构造的意思(create)   

display_channel_send_item -> marshall_qxl_drawable -> red_lossy_marshall_qxl_drawable -> red_lossy_marshall_qxl_draw_copy -> red_channel_client_init_send_data -> fill_bits() -> red_compress_image

阅读(3765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~