2008年10月5日星期日

nanox记一下大致的东西

Grxxx函数是C/S中client端调用的函数,在nanox文件夹里,client.c, nxproto.c, srvnet.c, 如果以link app的方式编译而不是C/S,那么srvfunc.c直接取代了client.c和srvnet.c

Gdxxx函数是nanox的核心函数,在engine文件夹里,devarc.c, devclip1.c, devdraw.c, devfont.c, devpoly.c等画图,devmouse.c,devkbd.c等是设备文件的接口,font_pcf.c, font_freetype.c是描述字体的文件格式是什么,如何解析。image_gif.c, image_jpeg.c是图片decode。

Gsxxx函数graphics server,在nanox/serv.h中可看到所有Gs开头函数原型。最重要的就是GsSelect函数,当系统初始化完毕进入主循环时,通过调用GsSelect函数获得按键等外部事件。

区分C/S还是link app to server在Makefile.rules里有一句,如果没定义LINK_APP_INTO_SERVER,那么用socket进行C/S通讯。
ifeq ($(LINK_APP_INTO_SERVER), Y)
DEFINES += -DNONETWORK=1
endif

如果是C/S,那么srvmain.c的main函数是第一个函数,调用GsInitialize初始化,然后进入GsSelect主循环获得外部事件。
/* Attempt to initialise the server*/
if(GsInitialize() < 0)
exit(1);

while(1)
GsSelect(0L);

如果是link app,那么app的main函数是第一个函数。当app调用GrOpen时,就会调用到GsInitialize初始化,之后app的主循环调用GrGetNextEvent函数获得事件并处理
for (;;)
{
GrGetNextEventTimeout(&event,1);
EventProc(&event);//app的事件处理函数
}

没有评论: