像我儿子一样永远保持好奇和梦想

[z]基于fusion的DirectFB消息流

上一篇 / 下一篇  2012-09-25 18:53:23 / 个人分类:linux

   ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 b#Nv,UX;D/B5}I,WQ

在传统的DirectFB应用中,所有的应用程序都在一个进程中,在性能上,有一些优势,然而一个应用程序不稳定会造成整个系统的不稳定。若采用C/S模型,无疑是重蹈X Widnow的覆辙,会丧失性能上的优势。

2F'itb$f q-HT0

&Ru'?;p+r,_0所以DirectFB采用了另外一种方式,与C/S相区别,称之为主从模型(Master/Slave)。它加了一个称之为fusion的内核模块。Fusion是熔化的意思,多个应用程序在不的进程空间里,通过这个内核模块通信,在这里,一切都溶为一体了。Master应用程序负责初始化一个称为竟技场的东西,其它Slave应用程序可以加入或者退出竟技场。当Master退出时,则其它所有Slave都必须退出。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台M!KT/t8aI uUZnh

y%L0ui!~0Fusion里采用了Reactor模式,每个应用程序可以通过ioctl向reactor注册事件处理器,当有事件发生时,reactor会把事件写入到所注册了的应用程序的fusion文件描述符时,之后应用程序可以从fusion文件描述符里读取到事件数据。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Yo9j#z%v%{WM%h

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3wj(H[M1u'K

当然,应用程序也可以通过ioctl发送事件给其它应用程序,reactor时会把事件分发给其它应用程序。

u*["Z \\:G"e V0

0~ B:mN,@,qbdM0下面以触摸屏为例介绍笔点事件的过程:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8O6Z'}'A_%CO6D@!r

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台a b [K!O jYZ!G

1. 初始化时,driver_open_device创建一个进程,挂在/dev/input/event0上,等待笔点事件。

zn9g1ym2\X`l0

SJ1U8y%_]CM.X[ S v02. 初始化时,应用程序创建另外一个线程,挂在/dev/fusionN(不同的应用程序N值不同)上。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台!j:e&V$q?

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台oUq%H+LH

3. 当有笔点事件时,通过函数调用dfb_input_dispatch–>fusion_reactor_dispatch->ioctl (FUSION_REACTOR_DISPATCH)把消息丢给内核模块。

5K/R2r8d:vu9z*Q L6B0

+S)a3Z4p2|\V Yx04. 内核模块中的Reactor把事件数据写入到各个所注册的事件处理器的/dev/fusionN里。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 w?,a MO/m p G d

Ekm6h#LBf.]2Y05. 应用程序从/dev/fusionN文件中取得事件数据,并调用应用程序内部的reactor处理函数,一般是IDirectFBEventBuffer_InputReact/IDirectFBEventBuffer_WindowReact两个函数。

O+EO-]/v%w/NV0

y1i{~&Zb4VC0J I06. 然后,在IDirectFBEventBuffer_InputReact/IDirectFBEventBuffer_WindowReact两个函数中,调用IDirectFBEventBuffer_AddItem把事件加入到窗口的事件队列中。

,^3sX1wzX"S h&h0

~T,GO [$P07. 在应用程序的主线程中,就可以通过调用窗口的GetEvent函数从事件队列中获取事件了,最后,把获取的事件分发到各个窗口事件处理函数中。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台tl8jm*|P7Q

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 _Gmd&V8z


ref:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 ifB1Jy+mI*W @

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台h-g[:ym,@D4H.P5g:Ri

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台0Ky Q T0p D M,R?

http://blog.sina.com.cn/s/blog_684bb6fb0100jasj.html

#C.z,R)O6`{ j(i2V&`0

$B)?8J8Cl_#v D0 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2t s0l5L&H,y;~x[


TAG: directfb linux Linux LINUX Qt qt

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar
博聚网