minigui 4.0 源代码分析(三)

2020-11-23  本文已影响0人  RonZheng2010

1. MSGQUEUE与MSG

MSGQUEUE是消息队列,MSG是队列中的消息。后面还有一节说明进一步的细节。

关于MSGQUEUE,

1.1 创建消息队列

mg_InitMsgQueue()创建消息队列。用户可以指定队列大小,缺省值为32。

1.2 向队列推送消息

Kernel_QueueMessage()用于向队列中推送消息。

2. 用户输入输出

2.1 INPUT

INPUT定义用户输入子系统。

全局数组inputs[]定义一系列的输入子系统,其中每个子系统与特定设备相关。这里指定系统名称、系统初始化函数。

INPUT inputs [] = {
  {"dummy", InitDummyInput, TermDummyInput},
  {"pc_xvfb", InitPCXVFBInput, TermPCXVFBInput},
  {"nexus", InitNexusInput, TermNexusInput},
  ...
};

这里说明的例子还是gvfb提供的虚拟设备“pc_xvfb”。

2.2 设备pc_xvfb

如前所说,minigui进程通过unix socket与gvfb进程连接。

gvfb进程捕捉输入消息,通过unix socket通道发给minigui进程。Minigui进程根据消息类型,相应地构造自己的消息XVFBEVENT,发送给minigui进程的顶层窗口HWND_DESKTOP。

2.3 XVFBEVENT

XVFBEVENT定义输入事件。

2.4 mg_InitIAL()

mg_InitIAL()初始化输入输出子系统。

2.5 IAL_WaitEvent()

IAL_WaitEvent()等待用户输入,得到相应的输入事件。这里它调用pxxvfb提供的wait_event()。其中,

上一篇 下一篇

猜你喜欢

热点阅读