|
本帖最后由 sh200436 于 2015-6-26 10:36 编辑
各位,这几天看了下Qt里的各种类,发现在qscreenlinuxfb_qws.cpp里有这么一句:
data = (unsigned char *)mmap(0, mapsize, PROT_READ | PROT_WRITE,
MAP_SHARED, d_ptr->fd, 0);
想必这个data就是Qt的FrameBuffer指针了。而后在QSreen的类里找到了data的定义,同时在该类里出现一个函数:base(),它的返回值就是data指针。
继续追踪,在qapplication_qws.cpp的void QWSDisplay Data:init()函数里,有这么一句:
QScreen *s = qt_get_screen(qws_display_id, qws_display_spec.constData());
这个 s 里就包含Qt_FrameBuffer的指针, 即 FrameBuffer_address = s-->base();
上述是反推的过程。再正过来看,应该是这么一个过程:
Qapplication----->初始化显示参数——>申请FrameBuffer----->将Linux_fb映射到该FrameBuffer------>显示
现在的问题其实就转化成了这个问题:
如何在Qapplication里得到Qscreen的base()参数?
或者,在Qt里如何使用Qscreen而得到base()参数?
--估计这应该是个简单的的问题,但对于我这个初学者来说,有点难啊,希望大家帮帮忙啊,我C语言不好。。。。谢谢。 |
|