no route to host Chromium网页输入事件捕捉和手势检测过程分析(16)

电脑杂谈  发布时间:2018-02-16 22:00:27  来源:网络整理

这个函数定义在文件external/chromium_org/ui/events/gesture_detection/touch_disposition_gesture_filter.cc中。

TouchDispositionGestureFilter类的成员函数OnGesturePacket首先推断参数packet描写叙述的Gesture Event Data Packet的类型是否等于GestureEventDataPacket::TOUCH_TIMEOUT。假设等于。而且当前的Gesture Event Data Packet队列为空。那么参数packet描写叙述的Gesture Event Data Packet就会立即被发送给Render进程。这个发送过程是通过调用TouchDispositionGestureFilter类的成员函数FilterAndSendPacket进行的。

从前面的分析能够知道。参数packet描写叙述的Gesture Event Data Packet的类型为GestureEventDataPacket::TOUCH_MOVE,因此它将不会立即被发送给Render进程,而是被保存在一个Gesture Event Data Packet队列中。那么,这个队列中的Gesture Event Data Packet什么会被发送给Render进程呢?当Render进程处理完毕Browser进程上一次发送给它的Gesture Event Data Packet之后。它就会给Browser进程发送一个ACK。Browser进程接收到这个ACK之后,就会从队列中取出下一个Gesture Event Data Packet发送给Render进程处理。

这个发送过程相同也是通过调用TouchDispositionGestureFilter类的成员函数FilterAndSendPacket进行的。因此。接下来我们就继续分析TouchDispositionGestureFilter类的成员函数FilterAndSendPacket的实现,例如以下所看到的:

void TouchDispositionGestureFilter::FilterAndSendPacket(
    const GestureEventDataPacket& packet) {
  ......

  for (size_t i = 0; i < packet.gesture_count(); ++i) {
    const GestureEventData& gesture = packet.gesture(i);
    ......

    SendGesture(gesture, packet);
  }

  ......
}
这个函数定义在文件external/chromium_org/ui/events/gesture_detection/touch_disposition_gesture_filter.cc中。

TouchDispositionGestureFilter类的成员函数FilterAndSendPacket遍历保存在参数packet描写叙述的Gesture Event Data Packet中的每个手势操作,而且调用另外一个成员函数SendGesture分别将这些手势操作发送给Render进程。例如以下所看到的:

void TouchDispositionGestureFilter::SendGesture(
    const GestureEventData& event,
    const GestureEventDataPacket& packet_being_sent) {
  ......

  client_->ForwardGestureEvent(event);
}
这个函数定义在文件external/chromium_org/ui/events/gesture_detection/touch_disposition_gesture_filter.cc中。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-81019-16.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 正式称帝
      正式称帝

      质检总局是怕人家说他们只拿钱不干活儿

    热点图片
    拼命载入中...