【问题标题】:pp::Core::GetTimeTicks() getting out of sync with pp::InputEvent::GetTimeStamp() on system sleeppp::Core::GetTimeTicks() 在系统睡眠时与 pp::InputEvent::GetTimeStamp() 不同步
【发布时间】:2014-03-27 13:20:21
【问题描述】:

我正在尝试使用“滴答时间”来跟踪我的 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() 似乎一直在运行。输入事件的时间戳比系统休眠的时间早于核心时钟。

这会破坏同时使用两个时钟来计时。一种解决方法是在运行模拟以响应输​​入事件时使用核心时钟,但这可能会导致按键和屏幕上的操作之间的延迟更高。另一种解决方法是根本不运行模拟以响应输​​入事件。不过,我想弄清楚这个难题。

这是实现中的错误吗?是不是文档中的一个错误,似乎说这些时间应该是同步的?还是我阅读文档有误?


我在适用于 Linux 的 Chrome 33.0.1750.152(官方版本 256984)上遇到了这种情况。

【问题讨论】:

    标签: c++ google-nativeclient ppapi


    【解决方案1】:

    这看起来像一个错误。 InputEvent 返回一个 PP_TimeTicks。时间刻度应该具有您通过 Core::GetTimeTicks() 看到的行为。

    但输入事件正在返回您的挂钟时间。这实际上是正确的,因为辣椒输入事件应该匹配 DOM 事件,并且 DOM 输入事件被指定为自 1970 年以来的时间(挂钟时间)。

    行为是正确的,但 GetTimeStamp 的返回类型应该是 PP_Time。我会存档的。

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多