// // Created by Bradley Austin Davis 2015/06/17 // Copyright 2013 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_Stats_h #define hifi_Stats_h #include #include #include #include #include #define STATS_PROPERTY(type, name, initialValue) \ Q_PROPERTY(type name READ name NOTIFY name##Changed) \ public: \ type name() { return _##name; }; \ private: \ type _##name{ initialValue }; /**jsdoc * @namespace Stats * * @hifi-interface * @hifi-client-entity * @hifi-avatar * @hifi-server-entity * @hifi-assignment-client * * @property {boolean} expanded * @property {boolean} timingExpanded - Read-only. * @property {string} monospaceFont - Read-only. * * @property {number} serverCount - Read-only. * @property {number} renderrate - How often the app is creating new gpu::Frames. Read-only. * @property {number} presentrate - How often the display plugin is presenting to the device. Read-only. * @property {number} stutterrate - How often the display device is reprojecting old frames. Read-only. * * @property {number} appdropped - Read-only. * @property {number} longsubmits - Read-only. * @property {number} longrenders - Read-only. * @property {number} longframes - Read-only. * * @property {number} presentnewrate - Read-only. * @property {number} presentdroprate - Read-only. * @property {number} gameLoopRate - Read-only. * @property {number} avatarCount - Read-only. * @property {number} heroAvatarCount - Read-only. * @property {number} physicsObjectCount - Read-only. * @property {number} updatedAvatarCount - Read-only. * @property {number} updatedHeroAvatarCount - Read-only. * @property {number} notUpdatedAvatarCount - Read-only. * @property {number} packetInCount - Read-only. * @property {number} packetOutCount - Read-only. * @property {number} mbpsIn - Read-only. * @property {number} mbpsOut - Read-only. * @property {number} assetMbpsIn - Read-only. * @property {number} assetMbpsOut - Read-only. * @property {number} audioPing - Read-only. * @property {number} avatarPing - Read-only. * @property {number} entitiesPing - Read-only. * @property {number} assetPing - Read-only. * @property {number} messagePing - Read-only. * @property {Vec3} position - Read-only. * @property {number} speed - Read-only. * @property {number} yaw - Read-only. * @property {number} avatarMixerInKbps - Read-only. * @property {number} avatarMixerInPps - Read-only. * @property {number} avatarMixerOutKbps - Read-only. * @property {number} avatarMixerOutPps - Read-only. * @property {number} myAvatarSendRate - Read-only. * * @property {number} audioMixerInKbps - Read-only. * @property {number} audioMixerInPps - Read-only. * @property {number} audioMixerOutKbps - Read-only. * @property {number} audioMixerOutPps - Read-only. * @property {number} audioMixerKbps - Read-only. * @property {number} audioMixerPps - Read-only. * @property {number} audioOutboundPPS - Read-only. * @property {number} audioSilentOutboundPPS - Read-only. * @property {number} audioAudioInboundPPS - Read-only. * @property {number} audioSilentInboundPPS - Read-only. * @property {number} audioPacketLoss - Read-only. * @property {string} audioCodec - Read-only. * @property {string} audioNoiseGate - Read-only. * @property {Vec2} audioInjectors - Read-only. * @property {number} entityPacketsInKbps - Read-only. * * @property {number} downloads - Read-only. * @property {number} downloadLimit - Read-only. * @property {number} downloadsPending - Read-only. * @property {string[]} downloadUrls - Read-only. * @property {number} processing - Read-only. * @property {number} processingPending - Read-only. * @property {number} triangles - Read-only. * @property {number} materialSwitches - Read-only. * @property {number} itemConsidered - Read-only. * @property {number} itemOutOfView - Read-only. * @property {number} itemTooSmall - Read-only. * @property {number} itemRendered - Read-only. * @property {number} shadowConsidered - Read-only. * @property {number} shadowOutOfView - Read-only. * @property {number} shadowTooSmall - Read-only. * @property {number} shadowRendered - Read-only. * @property {string} sendingMode - Read-only. * @property {string} packetStats - Read-only. * @property {number} lodAngle - Read-only. * @property {number} lodTargetFramerate - Read-only. * @property {string} lodStatus - Read-only. * @property {string} timingStats - Read-only. * @property {string} gameUpdateStats - Read-only. * @property {number} serverElements - Read-only. * @property {number} serverInternal - Read-only. * @property {number} serverLeaves - Read-only. * @property {number} localElements - Read-only. * @property {number} localInternal - Read-only. * @property {number} localLeaves - Read-only. * @property {number} rectifiedTextureCount - Read-only. * @property {number} decimatedTextureCount - Read-only. * @property {number} gpuBuffers - Read-only. * @property {number} gpuBufferMemory - Read-only. * @property {number} gpuTextures - Read-only. * @property {number} glContextSwapchainMemory - Read-only. * @property {number} qmlTextureMemory - Read-only. * @property {number} texturePendingTransfers - Read-only. * @property {number} gpuTextureMemory - Read-only. * @property {number} gpuTextureResidentMemory - Read-only. * @property {number} gpuTextureFramebufferMemory - Read-only. * @property {number} gpuTextureResourceMemory - Read-only. * @property {number} gpuTextureResourceIdealMemory - Read-only. * @property {number} gpuTextureResourcePopulatedMemory - Read-only. * @property {number} gpuTextureExternalMemory - Read-only. * @property {string} gpuTextureMemoryPressureState - Read-only. * @property {number} gpuFreeMemory - Read-only. * @property {number} gpuFrameTime - Read-only. * @property {number} batchFrameTime - Read-only. * @property {number} engineFrameTime - Read-only. * @property {number} avatarSimulationTime - Read-only. * * * @property {number} x * @property {number} y * @property {number} z * @property {number} width * @property {number} height * * @property {number} opacity * @property {boolean} enabled * @property {boolean} visible * * @property {string} state * @property {object} anchors - Read-only. * @property {number} baselineOffset * * @property {boolean} clip * * @property {boolean} focus * @property {boolean} activeFocus - Read-only. * @property {boolean} activeFocusOnTab * * @property {number} rotation * @property {number} scale * @property {number} transformOrigin * * @property {boolean} smooth * @property {boolean} antialiasing * @property {number} implicitWidth * @property {number} implicitHeight * * @property {object} layer - Read-only. * @property {number} stylusPicksCount - Read-only. * @property {number} rayPicksCount - Read-only. * @property {number} parabolaPicksCount - Read-only. * @property {number} collisionPicksCount - Read-only. * @property {Vec3} stylusPicksUpdated - Read-only. * @property {Vec3} rayPicksUpdated - Read-only. * @property {Vec3} parabolaPicksUpdated - Read-only. * @property {Vec3} collisionPicksUpdated - Read-only. * @property {bool} eventQueueDebuggingOn - Read-only. */ // Properties from x onwards are QQuickItem properties. class Stats : public QQuickItem { Q_OBJECT HIFI_QML_DECL Q_PROPERTY(bool expanded READ isExpanded WRITE setExpanded NOTIFY expandedChanged) Q_PROPERTY(bool timingExpanded READ isTimingExpanded NOTIFY timingExpandedChanged) Q_PROPERTY(QString monospaceFont READ monospaceFont CONSTANT) STATS_PROPERTY(int, serverCount, 0) // How often the app is creating new gpu::Frames STATS_PROPERTY(float, renderrate, 0) // How often the display plugin is presenting to the device STATS_PROPERTY(float, presentrate, 0) // How often the display device reprojecting old frames STATS_PROPERTY(float, stutterrate, 0) STATS_PROPERTY(int, appdropped, 0) STATS_PROPERTY(int, longsubmits, 0) STATS_PROPERTY(int, longrenders, 0) STATS_PROPERTY(int, longframes, 0) STATS_PROPERTY(float, presentnewrate, 0) STATS_PROPERTY(float, presentdroprate, 0) STATS_PROPERTY(int, gameLoopRate, 0) STATS_PROPERTY(int, avatarCount, 0) STATS_PROPERTY(int, refreshRateTarget, 0) STATS_PROPERTY(QString, refreshRateMode, QString()) STATS_PROPERTY(QString, refreshRateRegime, QString()) STATS_PROPERTY(QString, uxMode, QString()) STATS_PROPERTY(int, heroAvatarCount, 0) STATS_PROPERTY(int, physicsObjectCount, 0) STATS_PROPERTY(int, updatedAvatarCount, 0) STATS_PROPERTY(int, updatedHeroAvatarCount, 0) STATS_PROPERTY(int, notUpdatedAvatarCount, 0) STATS_PROPERTY(int, packetInCount, 0) STATS_PROPERTY(int, packetOutCount, 0) STATS_PROPERTY(float, mbpsIn, 0) STATS_PROPERTY(float, mbpsOut, 0) STATS_PROPERTY(float, assetMbpsIn, 0) STATS_PROPERTY(float, assetMbpsOut, 0) STATS_PROPERTY(int, audioPing, 0) STATS_PROPERTY(int, avatarPing, 0) STATS_PROPERTY(int, entitiesPing, 0) STATS_PROPERTY(int, assetPing, 0) STATS_PROPERTY(int, messagePing, 0) STATS_PROPERTY(QVector3D, position, QVector3D(0, 0, 0)) STATS_PROPERTY(float, speed, 0) STATS_PROPERTY(float, yaw, 0) STATS_PROPERTY(int, avatarMixerInKbps, 0) STATS_PROPERTY(int, avatarMixerInPps, 0) STATS_PROPERTY(int, avatarMixerOutKbps, 0) STATS_PROPERTY(int, avatarMixerOutPps, 0) STATS_PROPERTY(float, myAvatarSendRate, 0) STATS_PROPERTY(int, audioMixerInKbps, 0) STATS_PROPERTY(int, audioMixerInPps, 0) STATS_PROPERTY(int, audioMixerOutKbps, 0) STATS_PROPERTY(int, audioMixerOutPps, 0) STATS_PROPERTY(int, audioMixerKbps, 0) STATS_PROPERTY(int, audioMixerPps, 0) STATS_PROPERTY(int, audioOutboundPPS, 0) STATS_PROPERTY(int, audioSilentOutboundPPS, 0) STATS_PROPERTY(int, audioAudioInboundPPS, 0) STATS_PROPERTY(int, audioSilentInboundPPS, 0) STATS_PROPERTY(int, audioPacketLoss, 0) STATS_PROPERTY(QString, audioCodec, QString()) STATS_PROPERTY(QString, audioNoiseGate, QString()) STATS_PROPERTY(QVector2D, audioInjectors, QVector2D()); STATS_PROPERTY(int, entityPacketsInKbps, 0) STATS_PROPERTY(int, downloads, 0) STATS_PROPERTY(int, downloadLimit, 0) STATS_PROPERTY(int, downloadsPending, 0) Q_PROPERTY(QStringList downloadUrls READ downloadUrls NOTIFY downloadUrlsChanged) STATS_PROPERTY(int, processing, 0) STATS_PROPERTY(int, processingPending, 0) STATS_PROPERTY(int, triangles, 0) STATS_PROPERTY(uint32_t, drawcalls, 0) STATS_PROPERTY(int, materialSwitches, 0) STATS_PROPERTY(int, itemConsidered, 0) STATS_PROPERTY(int, itemOutOfView, 0) STATS_PROPERTY(int, itemTooSmall, 0) STATS_PROPERTY(int, itemRendered, 0) STATS_PROPERTY(int, shadowConsidered, 0) STATS_PROPERTY(int, shadowOutOfView, 0) STATS_PROPERTY(int, shadowTooSmall, 0) STATS_PROPERTY(int, shadowRendered, 0) STATS_PROPERTY(QString, sendingMode, QString()) STATS_PROPERTY(QString, packetStats, QString()) STATS_PROPERTY(int, lodAngle, 0) STATS_PROPERTY(int, lodTargetFramerate, 0) STATS_PROPERTY(QString, lodStatus, QString()) STATS_PROPERTY(QString, timingStats, QString()) STATS_PROPERTY(QString, gameUpdateStats, QString()) STATS_PROPERTY(int, serverElements, 0) STATS_PROPERTY(int, serverInternal, 0) STATS_PROPERTY(int, serverLeaves, 0) STATS_PROPERTY(int, localElements, 0) STATS_PROPERTY(int, localInternal, 0) STATS_PROPERTY(int, localLeaves, 0) STATS_PROPERTY(int, rectifiedTextureCount, 0) STATS_PROPERTY(int, decimatedTextureCount, 0) STATS_PROPERTY(int, gpuBuffers, 0) STATS_PROPERTY(int, gpuBufferMemory, 0) STATS_PROPERTY(int, gpuTextures, 0) STATS_PROPERTY(int, glContextSwapchainMemory, 0) STATS_PROPERTY(int, qmlTextureMemory, 0) STATS_PROPERTY(int, texturePendingTransfers, 0) STATS_PROPERTY(int, gpuTextureMemory, 0) STATS_PROPERTY(int, gpuTextureResidentMemory, 0) STATS_PROPERTY(int, gpuTextureFramebufferMemory, 0) STATS_PROPERTY(int, gpuTextureResourceMemory, 0) STATS_PROPERTY(int, gpuTextureResourceIdealMemory, 0) STATS_PROPERTY(int, gpuTextureResourcePopulatedMemory, 0) STATS_PROPERTY(int, gpuTextureExternalMemory, 0) STATS_PROPERTY(QString, gpuTextureMemoryPressureState, QString()) STATS_PROPERTY(int, gpuFreeMemory, 0) STATS_PROPERTY(QVector2D, gpuFrameSize, QVector2D(0,0)) STATS_PROPERTY(float, gpuFrameTime, 0) STATS_PROPERTY(float, gpuFrameTimePerPixel, 0) STATS_PROPERTY(float, batchFrameTime, 0) STATS_PROPERTY(float, engineFrameTime, 0) STATS_PROPERTY(float, avatarSimulationTime, 0) STATS_PROPERTY(int, stylusPicksCount, 0) STATS_PROPERTY(int, rayPicksCount, 0) STATS_PROPERTY(int, parabolaPicksCount, 0) STATS_PROPERTY(int, collisionPicksCount, 0) STATS_PROPERTY(QVector3D, stylusPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, rayPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, parabolaPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, collisionPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(int, mainThreadQueueDepth, -1); STATS_PROPERTY(int, nodeListThreadQueueDepth, -1); #ifdef DEBUG_EVENT_QUEUE STATS_PROPERTY(bool, eventQueueDebuggingOn, true) #else STATS_PROPERTY(bool, eventQueueDebuggingOn, false) #endif // DEBUG_EVENT_QUEUE public: static Stats* getInstance(); Stats(QQuickItem* parent = nullptr); bool includeTimingRecord(const QString& name); void setRenderDetails(const render::RenderDetails& details); const QString& monospaceFont() { return _monospaceFont; } void updateStats(bool force = false); bool isExpanded() { return _expanded; } bool isTimingExpanded() { return _showTimingDetails; } void setExpanded(bool expanded) { if (_expanded != expanded) { _expanded = expanded; emit expandedChanged(); } } QStringList downloadUrls () { return _downloadUrls; } public slots: void forceUpdateStats() { updateStats(true); } signals: /**jsdoc * Triggered when the value of the longsubmits property changes. * @function Stats.longsubmitsChanged * @returns {Signal} */ void longsubmitsChanged(); /**jsdoc * Triggered when the value of the longrenders property changes. * @function Stats.longrendersChanged * @returns {Signal} */ void longrendersChanged(); /**jsdoc * Triggered when the value of the longframes property changes. * @function Stats.longframesChanged * @returns {Signal} */ void longframesChanged(); /**jsdoc * Triggered when the value of the appdropped property changes. * @function Stats.appdroppedChanged * @returns {Signal} */ void appdroppedChanged(); /**jsdoc * Triggered when the value of the expanded property changes. * @function Stats.expandedChanged * @returns {Signal} */ void expandedChanged(); /**jsdoc * Triggered when the value of the timingExpanded property changes. * @function Stats.timingExpandedChanged * @returns {Signal} */ void timingExpandedChanged(); /**jsdoc * Triggered when the value of the serverCount property changes. * @function Stats.serverCountChanged * @returns {Signal} */ void serverCountChanged(); /**jsdoc * Triggered when the value of the renderrate property changes. * @function Stats.renderrateChanged * @returns {Signal} */ void renderrateChanged(); /**jsdoc * Triggered when the value of the presentrate property changes. * @function Stats.presentrateChanged * @returns {Signal} */ void presentrateChanged(); /**jsdoc * Triggered when the value of the presentnewrate property changes. * @function Stats.presentnewrateChanged * @returns {Signal} */ void presentnewrateChanged(); /**jsdoc * Triggered when the value of the presentdroprate property changes. * @function Stats.presentdroprateChanged * @returns {Signal} */ void presentdroprateChanged(); /**jsdoc * Triggered when the value of the stutterrate property changes. * @function Stats.stutterrateChanged * @returns {Signal} */ void stutterrateChanged(); /**jsdoc * Triggered when the value of the gameLoopRate property changes. * @function Stats.gameLoopRateChanged * @returns {Signal} */ void gameLoopRateChanged(); /**jsdoc * Trigered when * @function Stats.numPhysicsBodiesChanged * @returns {Signal} */ void physicsObjectCountChanged(); /**jsdoc * Triggered when the value of the avatarCount property changes. * @function Stats.avatarCountChanged * @returns {Signal} */ void avatarCountChanged(); /**jsdoc * Triggered when the value of the heroAvatarCount property changes. * @function Stats.heroAvatarCountChanged * @returns {Signal} */ void heroAvatarCountChanged(); /**jsdoc * Triggered when the value of the updatedAvatarCount property changes. * @function Stats.updatedAvatarCountChanged * @returns {Signal} */ void updatedAvatarCountChanged(); /**jsdoc * Triggered when the value of the updatedHeroAvatarCount property changes. * @function Stats.updatedHeroAvatarCountChanged * @returns {Signal} */ void updatedHeroAvatarCountChanged(); /**jsdoc * Triggered when the value of the notUpdatedAvatarCount property changes. * @function Stats.notUpdatedAvatarCountChanged * @returns {Signal} */ void notUpdatedAvatarCountChanged(); /**jsdoc * Triggered when the value of the packetInCount property changes. * @function Stats.packetInCountChanged * @returns {Signal} */ void packetInCountChanged(); /**jsdoc * Triggered when the value of the packetOutCount property changes. * @function Stats.packetOutCountChanged * @returns {Signal} */ void packetOutCountChanged(); /**jsdoc * Triggered when the value of the mbpsIn property changes. * @function Stats.mbpsInChanged * @returns {Signal} */ void mbpsInChanged(); /**jsdoc * Triggered when the value of the mbpsOut property changes. * @function Stats.mbpsOutChanged * @returns {Signal} */ void mbpsOutChanged(); /**jsdoc * Triggered when the value of the assetMbpsIn property changes. * @function Stats.assetMbpsInChanged * @returns {Signal} */ void assetMbpsInChanged(); /**jsdoc * Triggered when the value of the assetMbpsOut property changes. * @function Stats.assetMbpsOutChanged * @returns {Signal} */ void assetMbpsOutChanged(); /**jsdoc * Triggered when the value of the audioPing property changes. * @function Stats.audioPingChanged * @returns {Signal} */ void audioPingChanged(); /**jsdoc * Triggered when the value of the avatarPing property changes. * @function Stats.avatarPingChanged * @returns {Signal} */ void avatarPingChanged(); /**jsdoc * Triggered when the value of the entitiesPing property changes. * @function Stats.entitiesPingChanged * @returns {Signal} */ void entitiesPingChanged(); /**jsdoc * Triggered when the value of the assetPing property changes. * @function Stats.assetPingChanged * @returns {Signal} */ void assetPingChanged(); /**jsdoc * Triggered when the value of the messagePing property changes. * @function Stats.messagePingChanged * @returns {Signal} */ void messagePingChanged(); /**jsdoc * Triggered when the value of the position property changes. * @function Stats.positionChanged * @returns {Signal} */ void positionChanged(); /**jsdoc * Triggered when the value of the speed property changes. * @function Stats.speedChanged * @returns {Signal} */ void speedChanged(); /**jsdoc * Triggered when the value of the yaw property changes. * @function Stats.yawChanged * @returns {Signal} */ void yawChanged(); /**jsdoc * Triggered when the value of the avatarMixerInKbps property changes. * @function Stats.avatarMixerInKbpsChanged * @returns {Signal} */ void avatarMixerInKbpsChanged(); /**jsdoc * Triggered when the value of the avatarMixerInPps property changes. * @function Stats.avatarMixerInPpsChanged * @returns {Signal} */ void avatarMixerInPpsChanged(); /**jsdoc * Triggered when the value of the avatarMixerOutKbps property changes. * @function Stats.avatarMixerOutKbpsChanged * @returns {Signal} */ void avatarMixerOutKbpsChanged(); /**jsdoc * Triggered when the value of the avatarMixerOutPps property changes. * @function Stats.avatarMixerOutPpsChanged * @returns {Signal} */ void avatarMixerOutPpsChanged(); /**jsdoc * Triggered when the value of the myAvatarSendRate property changes. * @function Stats.myAvatarSendRateChanged * @returns {Signal} */ void myAvatarSendRateChanged(); /**jsdoc * Triggered when the value of the audioMixerInKbps property changes. * @function Stats.audioMixerInKbpsChanged * @returns {Signal} */ void audioMixerInKbpsChanged(); /**jsdoc * Triggered when the value of the audioMixerInPps property changes. * @function Stats.audioMixerInPpsChanged * @returns {Signal} */ void audioMixerInPpsChanged(); /**jsdoc * Triggered when the value of the audioMixerOutKbps property changes. * @function Stats.audioMixerOutKbpsChanged * @returns {Signal} */ void audioMixerOutKbpsChanged(); /**jsdoc * Triggered when the value of the audioMixerOutPps property changes. * @function Stats.audioMixerOutPpsChanged * @returns {Signal} */ void audioMixerOutPpsChanged(); /**jsdoc * Triggered when the value of the audioMixerKbps property changes. * @function Stats.audioMixerKbpsChanged * @returns {Signal} */ void audioMixerKbpsChanged(); /**jsdoc * Triggered when the value of the audioMixerPps property changes. * @function Stats.audioMixerPpsChanged * @returns {Signal} */ void audioMixerPpsChanged(); /**jsdoc * Triggered when the value of the audioOutboundPPS property changes. * @function Stats.audioOutboundPPSChanged * @returns {Signal} */ void audioOutboundPPSChanged(); /**jsdoc * Triggered when the value of the audioSilentOutboundPPS property changes. * @function Stats.audioSilentOutboundPPSChanged * @returns {Signal} */ void audioSilentOutboundPPSChanged(); /**jsdoc * Triggered when the value of the audioAudioInboundPPS property changes. * @function Stats.audioAudioInboundPPSChanged * @returns {Signal} */ void audioAudioInboundPPSChanged(); /**jsdoc * Triggered when the value of the audioSilentInboundPPS property changes. * @function Stats.audioSilentInboundPPSChanged * @returns {Signal} */ void audioSilentInboundPPSChanged(); /**jsdoc * Triggered when the value of the audioPacketLoss property changes. * @function Stats.audioPacketLossChanged * @returns {Signal} */ void audioPacketLossChanged(); /**jsdoc * Triggered when the value of the audioCodec property changes. * @function Stats.audioCodecChanged * @returns {Signal} */ void audioCodecChanged(); /**jsdoc * Triggered when the value of the audioNoiseGate property changes. * @function Stats.audioNoiseGateChanged * @returns {Signal} */ void audioNoiseGateChanged(); /**jsdoc * Triggered when the value of the audioInjectors property changes. * @function Stats.audioInjectorsChanged * @returns {Signal} */ void audioInjectorsChanged(); /**jsdoc * Triggered when the value of the entityPacketsInKbps property changes. * @function Stats.entityPacketsInKbpsChanged * @returns {Signal} */ void entityPacketsInKbpsChanged(); /**jsdoc * Triggered when the value of the downloads property changes. * @function Stats.downloadsChanged * @returns {Signal} */ void downloadsChanged(); /**jsdoc * Triggered when the value of the downloadLimit property changes. * @function Stats.downloadLimitChanged * @returns {Signal} */ void downloadLimitChanged(); /**jsdoc * Triggered when the value of the downloadsPending property changes. * @function Stats.downloadsPendingChanged * @returns {Signal} */ void downloadsPendingChanged(); /**jsdoc * Triggered when the value of the downloadUrls property changes. * @function Stats.downloadUrlsChanged * @returns {Signal} */ void downloadUrlsChanged(); /**jsdoc * Triggered when the value of the processing property changes. * @function Stats.processingChanged * @returns {Signal} */ void processingChanged(); /**jsdoc * Triggered when the value of the processingPending property changes. * @function Stats.processingPendingChanged * @returns {Signal} */ void processingPendingChanged(); /**jsdoc * Triggered when the value of the triangles property changes. * @function Stats.trianglesChanged * @returns {Signal} */ void trianglesChanged(); /**jsdoc * Triggered when the value of the drawcalls property changes. * This * @function Stats.drawcallsChanged * @returns {Signal} */ void drawcallsChanged(); /**jsdoc * Triggered when the value of the materialSwitches property changes. * @function Stats.materialSwitchesChanged * @returns {Signal} */ void materialSwitchesChanged(); /**jsdoc * Triggered when the value of the itemConsidered property changes. * @function Stats.itemConsideredChanged * @returns {Signal} */ void itemConsideredChanged(); /**jsdoc * Triggered when the value of the itemOutOfView property changes. * @function Stats.itemOutOfViewChanged * @returns {Signal} */ void itemOutOfViewChanged(); /**jsdoc * Triggered when the value of the itemTooSmall property changes. * @function Stats.itemTooSmallChanged * @returns {Signal} */ void itemTooSmallChanged(); /**jsdoc * Triggered when the value of the itemRendered property changes. * @function Stats.itemRenderedChanged * @returns {Signal} */ void itemRenderedChanged(); /**jsdoc * Triggered when the value of the shadowConsidered property changes. * @function Stats.shadowConsideredChanged * @returns {Signal} */ void shadowConsideredChanged(); /**jsdoc * Triggered when the value of the shadowOutOfView property changes. * @function Stats.shadowOutOfViewChanged * @returns {Signal} */ void shadowOutOfViewChanged(); /**jsdoc * Triggered when the value of the shadowTooSmall property changes. * @function Stats.shadowTooSmallChanged * @returns {Signal} */ void shadowTooSmallChanged(); /**jsdoc * Triggered when the value of the shadowRendered property changes. * @function Stats.shadowRenderedChanged * @returns {Signal} */ void shadowRenderedChanged(); /**jsdoc * Triggered when the value of the sendingMode property changes. * @function Stats.sendingModeChanged * @returns {Signal} */ void sendingModeChanged(); /**jsdoc * Triggered when the value of the packetStats property changes. * @function Stats.packetStatsChanged * @returns {Signal} */ void packetStatsChanged(); /**jsdoc * Triggered when the value of the lodAngle property changes. * @function Stats.lodAngleChanged * @returns {Signal} */ void lodAngleChanged(); /**jsdoc * Triggered when the value of the lodTargetFramerate property changes. * @function Stats.lodTargetFramerateChanged * @returns {Signal} */ void lodTargetFramerateChanged(); /**jsdoc * Triggered when the value of the lodStatus property changes. * @function Stats.lodStatusChanged * @returns {Signal} */ void lodStatusChanged(); /**jsdoc * Triggered when the value of the serverElements property changes. * @function Stats.serverElementsChanged * @returns {Signal} */ void serverElementsChanged(); /**jsdoc * Triggered when the value of the serverInternal property changes. * @function Stats.serverInternalChanged * @returns {Signal} */ void serverInternalChanged(); /**jsdoc * Triggered when the value of the serverLeaves property changes. * @function Stats.serverLeavesChanged * @returns {Signal} */ void serverLeavesChanged(); /**jsdoc * Triggered when the value of the localElements property changes. * @function Stats.localElementsChanged * @returns {Signal} */ void localElementsChanged(); /**jsdoc * Triggered when the value of the localInternal property changes. * @function Stats.localInternalChanged * @returns {Signal} */ void localInternalChanged(); /**jsdoc * Triggered when the value of the localLeaves property changes. * @function Stats.localLeavesChanged * @returns {Signal} */ void localLeavesChanged(); /**jsdoc * Triggered when the value of the timingStats property changes. * @function Stats.timingStatsChanged * @returns {Signal} */ void timingStatsChanged(); /**jsdoc * Triggered when the value of the gameUpdateStats property changes. * @function Stats.gameUpdateStatsChanged * @returns {Signal} */ void gameUpdateStatsChanged(); /**jsdoc * Triggered when the value of the glContextSwapchainMemory property changes. * @function Stats.glContextSwapchainMemoryChanged * @returns {Signal} */ void glContextSwapchainMemoryChanged(); /**jsdoc * Triggered when the value of the qmlTextureMemory property changes. * @function Stats.qmlTextureMemoryChanged * @returns {Signal} */ void qmlTextureMemoryChanged(); /**jsdoc * Triggered when the value of the texturePendingTransfers property changes. * @function Stats.texturePendingTransfersChanged * @returns {Signal} */ void texturePendingTransfersChanged(); /**jsdoc * Triggered when the value of the gpuBuffers property changes. * @function Stats.gpuBuffersChanged * @returns {Signal} */ void gpuBuffersChanged(); /**jsdoc * Triggered when the value of the gpuBufferMemory property changes. * @function Stats.gpuBufferMemoryChanged * @returns {Signal} */ void gpuBufferMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextures property changes. * @function Stats.gpuTexturesChanged * @returns {Signal} */ void gpuTexturesChanged(); /**jsdoc * Triggered when the value of the gpuTextureMemory property changes. * @function Stats.gpuTextureMemoryChanged * @returns {Signal} */ void gpuTextureMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureResidentMemory property changes. * @function Stats.gpuTextureResidentMemoryChanged * @returns {Signal} */ void gpuTextureResidentMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureFramebufferMemory property changes. * @function Stats.gpuTextureFramebufferMemoryChanged * @returns {Signal} */ void gpuTextureFramebufferMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureResourceMemory property changes. * @function Stats.gpuTextureResourceMemoryChanged * @returns {Signal} */ void gpuTextureResourceMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureResourceIdealMemory property changes. * @function Stats.gpuTextureResourceIdealMemoryChanged * @returns {Signal} */ void gpuTextureResourceIdealMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureResourcePopulatedMemory property changes. * @function Stats.gpuTextureResourcePopulatedMemoryChanged * @returns {Signal} */ void gpuTextureResourcePopulatedMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureExternalMemory property changes. * @function Stats.gpuTextureExternalMemoryChanged * @returns {Signal} */ void gpuTextureExternalMemoryChanged(); /**jsdoc * Triggered when the value of the gpuTextureMemoryPressureState property changes. * @function Stats.gpuTextureMemoryPressureStateChanged * @returns {Signal} */ void gpuTextureMemoryPressureStateChanged(); /**jsdoc * Triggered when the value of the gpuFreeMemory property changes. * @function Stats.gpuFreeMemoryChanged * @returns {Signal} */ void gpuFreeMemoryChanged(); /**jsdoc * Triggered when the value of the gpuFrameTime property changes. * @function Stats.gpuFrameTimeChanged * @returns {Signal} */ void gpuFrameTimeChanged(); /**jsdoc * Triggered when the value of the gpuFrameTime property changes. * @function Stats.gpuFrameTimeChanged * @returns {Signal} */ void gpuFrameSizeChanged(); /**jsdoc * Triggered when the value of the gpuFrameTime property changes. * @function Stats.gpuFrameTimeChanged * @returns {Signal} */ void gpuFrameTimePerPixelChanged(); /**jsdoc * Triggered when the value of the batchFrameTime property changes. * @function Stats.batchFrameTimeChanged * @returns {Signal} */ void batchFrameTimeChanged(); /**jsdoc * Triggered when the value of the engineFrameTime property changes. * @function Stats.engineFrameTimeChanged * @returns {Signal} */ void engineFrameTimeChanged(); /**jsdoc * Triggered when the value of the avatarSimulationTime property changes. * @function Stats.avatarSimulationTimeChanged * @returns {Signal} */ void avatarSimulationTimeChanged(); /**jsdoc * Triggered when the value of the rectifiedTextureCount property changes. * @function Stats.rectifiedTextureCountChanged * @returns {Signal} */ void rectifiedTextureCountChanged(); /**jsdoc * Triggered when the value of the decimatedTextureCount property changes. * @function Stats.decimatedTextureCountChanged * @returns {Signal} */ void decimatedTextureCountChanged(); void refreshRateTargetChanged(); void refreshRateModeChanged(); void refreshRateRegimeChanged(); void uxModeChanged(); // QQuickItem signals. /**jsdoc * Triggered when the parent item changes. * @function Stats.parentChanged * @param {object} parent * @returns {Signal} */ /**jsdoc * Triggered when the value of the x property changes. * @function Stats.xChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the y property changes. * @function Stats.yChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the z property changes. * @function Stats.zChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the width property changes. * @function Stats.widthChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the height property changes. * @function Stats.heightChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the opacity property changes. * @function Stats.opacityChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the enabled property changes. * @function Stats.enabledChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the visibleChanged property changes. * @function Stats.visibleChanged * @returns {Signal} */ /**jsdoc * Triggered when the list of visible children changes. * @function Stats.visibleChildrenChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the state property changes. * @function Stats.stateChanged * @paramm {string} state * @returns {Signal} */ /**jsdoc * Triggered when the position and size of the rectangle containing the children changes. * @function Stats.childrenRectChanged * @param {Rect} childrenRect * @returns {Signal} */ /**jsdoc * Triggered when the value of the baselineOffset property changes. * @function Stats.baselineOffsetChanged * @param {number} baselineOffset * @returns {Signal} */ /**jsdoc * Triggered when the value of the clip property changes. * @function Stats.clipChanged * @param {boolean} clip * @returns {Signal} */ /**jsdoc * Triggered when the value of the focus property changes. * @function Stats.focusChanged * @param {boolean} focus * @returns {Signal} */ /**jsdoc * Triggered when the value of the activeFocus property changes. * @function Stats.activeFocusChanged * @param {boolean} activeFocus * @returns {Signal} */ /**jsdoc * Triggered when the value of the activeFocusOnTab property changes. * @function Stats.activeFocusOnTabChanged * @param {boolean} activeFocusOnTab * @returns {Signal} */ /**jsdoc * Triggered when the value of the rotation property changes. * @function Stats.rotationChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the scaleChanged property changes. * @function Stats.scaleChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the transformOrigin property changes. * @function Stats.transformOriginChanged * @param {number} transformOrigin * @returns {Signal} */ /**jsdoc * Triggered when the value of the smooth property changes. * @function Stats.smoothChanged * @param {boolean} smooth * @returns {Signal} */ /**jsdoc * Triggered when the value of the antialiasing property changes. * @function Stats.antialiasingChanged * @param {boolean} antialiasing * @returns {Signal} */ /**jsdoc * Triggered when the value of the implicitWidth property changes. * @function Stats.implicitWidthChanged * @returns {Signal} */ /**jsdoc * Triggered when the value of the implicitHeight property changes. * @function Stats.implicitHeightChanged * @returns {Signal} */ /**jsdoc * @function Stats.windowChanged * @param {object} window * @returns {Signal} */ // QQuickItem functions. /**jsdoc * @function Stats.grabToImage * @param {object} callback * @param {Size} [targetSize=0,0] * @returns {boolean} */ /**jsdoc * @function Stats.contains * @param {Vec2} point * @returns {boolean} */ /**jsdoc * @function Stats.mapFromItem * @param {object} item */ /**jsdoc * @function Stats.mapToItem * @param {object} item */ /**jsdoc * @function Stats.mapFromGlobal * @param {object} global */ /**jsdoc * @function Stats.mapToGlobal * @param {object} global */ /**jsdoc * @function Stats.forceActiveFocus * @param {number} [reason=7] */ /**jsdoc * @function Stats.nextItemInFocusChain * @param {boolean} [forward=true] * @returns {object} */ /**jsdoc * @function Stats.childAt * @param {number} x * @param {number} y * @returns {object} */ /**jsdoc * @function Stats.update */ /**jsdoc * Triggered when the value of the stylusPicksCount property changes. * @function Stats.stylusPicksCountChanged * @returns {Signal} */ void stylusPicksCountChanged(); /**jsdoc * Triggered when the value of the rayPicksCount property changes. * @function Stats.rayPicksCountChanged * @returns {Signal} */ void rayPicksCountChanged(); /**jsdoc * Triggered when the value of the parabolaPicksCount property changes. * @function Stats.parabolaPicksCountChanged * @returns {Signal} */ void parabolaPicksCountChanged(); /**jsdoc * Triggered when the value of the collisionPicksCount property changes. * @function Stats.collisionPicksCountChanged * @returns {Signal} */ void collisionPicksCountChanged(); /**jsdoc * Triggered when the value of the stylusPicksUpdated property changes. * @function Stats.stylusPicksUpdatedChanged * @returns {Signal} */ void stylusPicksUpdatedChanged(); /**jsdoc * Triggered when the value of the rayPicksUpdated property changes. * @function Stats.rayPicksUpdatedChanged * @returns {Signal} */ void rayPicksUpdatedChanged(); /**jsdoc * Triggered when the value of the parabolaPicksUpdated property changes. * @function Stats.parabolaPicksUpdatedChanged * @returns {Signal} */ void parabolaPicksUpdatedChanged(); /**jsdoc * Triggered when the value of the collisionPicksUpdated property changes. * @function Stats.collisionPicksUpdatedChanged * @returns {Signal} */ void collisionPicksUpdatedChanged(); /**jsdoc * Triggered when the value of the eventQueueDebuggingOn property changes. * @function Stats.eventQueueDebuggingOn * @returns {Signal} */ void eventQueueDebuggingOnChanged(); /**jsdoc * Triggered when the value of the nodeListThreadQueueDepth property changes. * @function Stats.nodeListThreadQueueDepth * @returns {Signal} */ void nodeListThreadQueueDepthChanged(); /**jsdoc * Triggered when the value of the nodeListThreadQueueDepth property changes. * @function Stats.nodeListThreadQueueDepth * @returns {Signal} */ void mainThreadQueueDepthChanged(); private: int _recentMaxPackets{ 0 } ; // recent max incoming voxel packets to process bool _resetRecentMaxPacketsSoon{ true }; bool _expanded{ false }; bool _showTimingDetails{ false }; bool _showGameUpdateStats{ false }; QString _monospaceFont; const AudioIOStats* _audioStats; QStringList _downloadUrls = QStringList(); }; #endif // hifi_Stats_h