也不知道是我使用问题还是cef的问题。我一用离屏模式,鼠标滚轮就不对劲了。
具体情况是这样:CefBrowserPlatformDelegateNativeWin::TranslateMouseEvent里面会产生event的时间戳,result.SetTimeStamp(time_stamp);
但这个时间戳,居然是base::TimeTicks() + base::TimeDelta::FromMilliseconds(GetMessageTime());
这样的方式产生的。这个GetMessageTime感觉不是很靠谱。
然后到了InputHandlerProxy::HandleGestureScrollUpdate里面,会
base::TimeTicks event_time = gesture_event.TimeStamp();
base::TimeDelta delay = base::TimeTicks::Now() - event_time;
也就是说,用当前时间减去上述那个时间戳,得出一个delay。
而这个delay有可能是负数。
这样后面做滚动动画的时间,就乱套了。
我看最新代码也是差不多的逻辑,还没调试。
不知道具体是我使用问题还是怎么样,反正我最近改了下cef的内核代码,正常了。