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

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

函数ToGestureSource返回的Gesture Event Data Packet的类型与参数evnet描写叙述的Touch事件的类型有关。比如。假设event描写叙述的是一个ACTION_MOVE类型的Touch事件,那么函数ToGestureSource返回的Gesture Event Data Packet的类型就为GestureEventDataPacket::TOUCH_MOVE。

在接下来的分析中,我们就假设当前要处理的是一个ACTION_MOVE类型的Touch事件,这意味着FilteredGestureProvider类的成员函数OnTouchEvent调用GestureEventDataPacket类的静态成员函数FromTouch获得的是一个类型为GestureEventDataPacket::TOUCH_MOVE的Gesture Event Data Packet。

这个Gesture Event Data Packet保存在FilteredGestureProvider类的成员变量pending_gesture_packet_中。

回到FilteredGestureProvider类的成员函数OnTouchEvent中。它接下来调用成员变量gesture_provider_描写叙述的一个GestureProvider对象的成员函数OnTouchEvent检查参数event描写叙述的Touch事件是否产生了手势操作。

假设产生了,那么就会将它们保存在成员变量pending_gesture_packet_描写叙述的Gesture Event Data Packet中。

FilteredGestureProvider类的成员变量gesture_filter_描写叙述的是一个TouchDispositionGestureFilter对象,FilteredGestureProvider类的成员函数OnTouchEvent最后调用这个TouchDispositionGestureFilter对象的成员函数OnGesturePacket将成员变量pending_gesture_packet_描写叙述的Gesture Event Data Packet发送给Render进程处理,也就是将前面检测到的手势操作发送给Render进程处理。

接下来。我们先分析GestureProvider对象的成员函数OnTouchEvent检测手势操作的过程,接下来再分析TouchDispositionGestureFilter类的成员函数OnGesturePacket发送手势操作给Render进程的过程。

GestureProvider类的成员函数OnTouchEvent的实现例如以下所看到的:

bool GestureProvider::OnTouchEvent(const MotionEvent& event) {
  ......

  gesture_listener_->OnTouchEvent(event, in_scale_gesture);
  scale_gesture_listener_->OnTouchEvent(event);

  ......

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

GestureProvider类的成员变量gesture_listener_指向的是一个GestureListenerImpl对象。


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

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

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