Make getHardwareStats thread safe

This commit is contained in:
Atlante45 2016-12-29 11:09:09 -08:00
parent f46b8f3e6d
commit e5901fa875
2 changed files with 16 additions and 4 deletions

View file

@ -22,6 +22,13 @@
const char* OculusDisplayPlugin::NAME { "Oculus Rift" }; const char* OculusDisplayPlugin::NAME { "Oculus Rift" };
static ovrPerfHudMode currentDebugMode = ovrPerfHud_Off; static ovrPerfHudMode currentDebugMode = ovrPerfHud_Off;
OculusDisplayPlugin::OculusDisplayPlugin() {
_appDroppedFrames.store(0);
_compositorDroppedFrames.store(0);
}
bool OculusDisplayPlugin::internalActivate() { bool OculusDisplayPlugin::internalActivate() {
bool result = Parent::internalActivate(); bool result = Parent::internalActivate();
currentDebugMode = ovrPerfHud_Off; currentDebugMode = ovrPerfHud_Off;
@ -158,15 +165,18 @@ void OculusDisplayPlugin::hmdPresent() {
compositorDroppedFrames = frameStats.CompositorDroppedFrameCount; compositorDroppedFrames = frameStats.CompositorDroppedFrameCount;
appDroppedFrames = frameStats.AppDroppedFrameCount; appDroppedFrames = frameStats.AppDroppedFrameCount;
} }
_hardwareStats["app_dropped_frame_count"] = appDroppedFrames; _appDroppedFrames.store(appDroppedFrames);
_hardwareStats["compositor_dropped_frame_count"] = compositorDroppedFrames; _compositorDroppedFrames.store(compositorDroppedFrames);
} }
_presentRate.increment(); _presentRate.increment();
} }
QJsonObject OculusDisplayPlugin::getHardwareStats() const { QJsonObject OculusDisplayPlugin::getHardwareStats() const {
return _hardwareStats; QJsonObject hardwareStats;
hardwareStats["app_dropped_frame_count"] = _appDroppedFrames.load();
hardwareStats["compositor_dropped_frame_count"] = _compositorDroppedFrames.load();
return hardwareStats;
} }
bool OculusDisplayPlugin::isHmdMounted() const { bool OculusDisplayPlugin::isHmdMounted() const {

View file

@ -12,6 +12,7 @@
class OculusDisplayPlugin : public OculusBaseDisplayPlugin { class OculusDisplayPlugin : public OculusBaseDisplayPlugin {
using Parent = OculusBaseDisplayPlugin; using Parent = OculusBaseDisplayPlugin;
public: public:
OculusDisplayPlugin();
~OculusDisplayPlugin(); ~OculusDisplayPlugin();
const QString getName() const override { return NAME; } const QString getName() const override { return NAME; }
@ -36,6 +37,7 @@ private:
gpu::FramebufferPointer _outputFramebuffer; gpu::FramebufferPointer _outputFramebuffer;
bool _customized { false }; bool _customized { false };
QJsonObject _hardwareStats; std::atomic_int _compositorDroppedFrames;
std::atomic_int _appDroppedFrames;
}; };