系统睡眠时,pp::Core::GetTimeTicks()与pp::InputEvent::GetTimeStamp(
pp::Core::GetTimeTicks() getting out of sync with pp::InputEvent::GetTimeStamp() on system sleep
我正试图在PNaCl游戏中使用"滴答时间"来跟踪时间,因为游戏时间不应该受到用户调整系统时钟的影响。
我想使用pp::Core::GetTimeTicks()
和pp::InputEvent::GetTimeStamp()
来运行我的游戏模拟。逻辑如下:当输入事件发生时,运行模拟,直到游戏时间与该事件的pp::InputEvent::GetTimeStamp()
匹配。当渲染完成回调发生时,运行模拟,直到游戏时间与pp::Core::GetTimeTicks()
匹配。
这从一开始就很好,而且就我所能理解的文档而言,这个用例似乎得到了支持,来自pp::Core::GetTimeTicks()
:
浏览器在将一些事件时间传递给模块时使用此时钟(例如,使用PP_InputEvent::time_stamp_seconds字段(。
然而,当我让电脑进入睡眠状态并再次打开它时,这两个时钟似乎与电脑睡眠的时间不同步。pp::Core::GetTimeTicks()
似乎在系统睡眠时停止运行,而pp::InputEvent::GetTimeStamp()
似乎一直在运行。输入事件的时间戳早于核心时钟系统休眠的时间量。
这样就不能同时使用两个时钟计时。一种解决方法是在运行模拟以响应输入事件时使用核心时钟,但这可能会导致按键和屏幕上的操作之间的延迟更高。另一种解决方法是简单地不运行模拟以响应输入事件。尽管如此,我还是想弄清这个难题的真相。
这是实现中的错误吗?这是文档中的一个错误吗?文档中似乎说这些时间应该同步?还是我读错了文件?
我在Chrome 33.0.1750.152(官方版本256984(Linux上遇到过这种情况。
这看起来像一个bug。InputEvent返回PP_TimeTicks。时间刻度应该具有您通过Core::GetTimeTicks((看到的行为。
但是输入事件正在返回墙上的时钟时间。这实际上是正确的,因为pepper输入事件应该与DOM事件匹配,并且DOM输入事件自1970年以来被指定为时间(墙上的时钟时间(。
行为是正确的,但是GetTimeStamp的返回类型应该是PP_Time。我会把这个归档。
- 在C++中,如果"int a = 3; int* p = &a;",那么为什么不允许"const int* &pp = p",但允许"const int* const &pp = p"?
- *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体的区别吗?(C/C++指针问题)
- 代码 P 的问题:PP 演练 4
- pp标记还剩下哪些字符
- C/pp套接字,recv()/send()只在gdb下工作
- Bjarne Stroustrup的P:PP Chapter 4 Drill
- 命名空间中没有名为'VarDictionary'的类型'pp'使用 PNaCl
- 斯特劳斯特鲁普的P:PP 第4章 钻头:卡住
- 有效和无效的PP代币的定义是什么?
- 系统睡眠时,pp::Core::GetTimeTicks()与pp::InputEvent::GetTimeStamp(