并提供/proc文件系统供查看各个primivites的状态
Fusion注册为主设备号为250的字符设备,共有/dev/fusion0-7八个设备节点每个设备节点代表一个独立的Fusion World。
mmap调用的额外返回值:
timeout_ms为超市毫秒数设置-1表示不等待,0表示不限制换句话说,一直等到至少一个fusionee被terminated
在传统的DirectFB应用中,所有的應用程序都在一个进程中在性能上,有一些优势然而一个应用程序不稳定会造成整个系统的不稳定。若采用C/S模型无疑是重蹈XWidnow的覆辙,会丧失性能上的优势
所以DirectFB采用了另外一种方式,与C/S相区别称之为主从模型(Master/Slave)。它加了一个称之为fusion的内核模块Fusion是熔化的意思,多個应用程序在不的进程空间里通过这个内核模块通信,在这里一切都溶为一体了。Master应用程序负责初始化一个称为竟技场的东西其它Slave應用程序可以加入或者退出竟技场。当Master退出时则其它所有Slave都必须退出。
Fusion里采用了Reactor模式每个应用程序可以通过ioctl向reactor注册事件处理器,当有倳件发生时reactor会把事件写入到所注册了的应用程序的fusion文件描述符时,之后应用程序可以从fusion文件描述符里读取到事件数据
当然,应用程序吔可以通过ioctl发送事件给其它应用程序reactor时会把事件分发给其它应用程序。
下面以触摸屏为例介绍笔点事件的过程:
2.初始化时应用程序创建另外一个线程,挂在/dev/fusionN(不同的应用程序N值不同)上
4.内核模块中的Reactor把事件数据写入到各个所注册的事件处理器的/dev/fusionN里。
7.在应用程序的主线程中就可以通过调用窗口的GetEvent函数从事件队列中获取事件了,最后把获取的事件分发到各个窗口事件处理函数中。
转载时请注明出处和作者聯系方式