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" };
static ovrPerfHudMode currentDebugMode = ovrPerfHud_Off;
OculusDisplayPlugin::OculusDisplayPlugin() {
_appDroppedFrames.store(0);
_compositorDroppedFrames.store(0);
}
bool OculusDisplayPlugin::internalActivate() {
bool result = Parent::internalActivate();
currentDebugMode = ovrPerfHud_Off;
@ -158,15 +165,18 @@ void OculusDisplayPlugin::hmdPresent() {
compositorDroppedFrames = frameStats.CompositorDroppedFrameCount;
appDroppedFrames = frameStats.AppDroppedFrameCount;
}
_hardwareStats["app_dropped_frame_count"] = appDroppedFrames;
_hardwareStats["compositor_dropped_frame_count"] = compositorDroppedFrames;
_appDroppedFrames.store(appDroppedFrames);
_compositorDroppedFrames.store(compositorDroppedFrames);
}
_presentRate.increment();
}
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 {

View file

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