Overte C++ Documentation
Stats.h
1 //
2 // Created by Bradley Austin Davis 2015/06/17
3 // Copyright 2013 High Fidelity, Inc.
4 //
5 // Distributed under the Apache License, Version 2.0.
6 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7 //
8 
9 #ifndef hifi_Stats_h
10 #define hifi_Stats_h
11 
12 #include <QtGui/QVector3D>
13 
14 #include <OffscreenQmlElement.h>
15 #include <AudioIOStats.h>
16 #include <render/Args.h>
17 #include <shared/QtHelpers.h>
18 
19 #define STATS_PROPERTY(type, name, initialValue) \
20  Q_PROPERTY(type name READ name NOTIFY name##Changed) \
21 public: \
22  type name() { return _##name; }; \
23 private: \
24  type _##name{ initialValue };
25 
26 /*@jsdoc
27  * The <code>Stats</code> API provides statistics on Interface and domain operation, per the statistics overlay.
28  *
29  * <p><strong>Note:</strong> This API is primarily an internal diagnostics tool and is provided "as is".</p>
30  *
31  * @namespace Stats
32  *
33  * @hifi-interface
34  * @hifi-client-entity
35  * @hifi-avatar
36  * @hifi-server-entity
37  * @hifi-assignment-client
38  *
39  * @property {boolean} expanded - <code>true</code> if the statistics overlay should be in expanded form when the overlay is
40  * displayed, <code>false</code> if it shouldn't be expanded.
41  * @property {boolean} timingExpanded - <code>true</code> if timing details should be displayed when the statistics overlay is
42  * displayed in expanded form, <code>false</code> if timing details should not be displayed. Set by the menu item,
43  * Developer &gt; Timing &gt; Performance Timer &gt; Display Timing Details.
44  * <em>Read-only.</em>
45  * @property {string} monospaceFont - The name of the monospace font used in the statistics overlay.
46  * <em>Read-only.</em>
47  *
48  * @property {number} serverCount - The number of servers that Interface is connected to.
49  * <em>Read-only.</em>
50  * @property {number} renderrate - The rate at which new GPU frames are being created, in Hz.
51  * <em>Read-only.</em>
52  * @property {number} presentrate - The rate at which the display plugin is presenting to the display device, in Hz.
53  * <em>Read-only.</em>
54  * @property {number} stutterrate - The rate at which the display plugin is reprojecting old GPU frames, in Hz.
55  * <em>Read-only.</em>
56  *
57  * @property {number} appdropped - The number of times a frame has not been provided to the display device in time.
58  * <em>Read-only.</em>
59  * @property {number} longsubmits - The number of times the display device has taken longer than 11ms to return after being
60  * given a frame.
61  * <em>Read-only.</em>
62  * @property {number} longrenders - The number of times it has taken longer than 11ms to submit a new frame to the display
63  * device.
64  * <em>Read-only.</em>
65  * @property {number} longframes - The number of times <code>longsubmits + longrenders</code> has taken longer than 15ms.
66  * <em>Read-only.</em>
67  *
68  * @property {number} presentnewrate - The rate at which the display plugin is presenting new GPU frames, in Hz.
69  * <em>Read-only.</em>
70  * @property {number} presentdroprate - The rate at which the display plugin is dropping GPU frames, in Hz.
71  * <em>Read-only.</em>
72 
73  * @property {number} gameLoopRate - The rate at which the game loop is running, in Hz.
74  * <em>Read-only.</em>
75  * @property {number} refreshRateTarget - The current target refresh rate, in Hz, per the current <code>refreshRateMode</code>
76  * and <code>refreshRateRegime</code> if in desktop mode; a higher rate if in VR mode.
77  * <em>Read-only.</em>
78  * @property {RefreshRateProfileName} refreshRateMode - The current refresh rate profile.
79  * <em>Read-only.</em>
80  * @property {RefreshRateRegimeName} refreshRateRegime - The current refresh rate regime.
81  * <em>Read-only.</em>
82  * @property {UXModeName} uxMode - The user experience (UX) mode that Interface is running in.
83  * <em>Read-only.</em>
84  * @property {number} avatarCount - The number of avatars in the domain other than the client's.
85  * <em>Read-only.</em>
86  * @property {number} heroAvatarCount - The number avatars in a "hero" zone in the domain, other than the client's.
87  * <em>Read-only.</em>
88  * @property {number} physicsObjectCount - The number of objects that have collisions enabled.
89  * <em>Read-only.</em>
90  * @property {number} updatedAvatarCount - The number of avatars in the domain, other than the client's, that were updated in
91  * the most recent game loop.
92  * <em>Read-only.</em>
93  * @property {number} updatedHeroAvatarCount - The number of avatars in a "hero" zone in the domain, other than the client's,
94  * that were updated in the most recent game loop.
95  * <em>Read-only.</em>
96  * @property {number} notUpdatedAvatarCount - The number of avatars in the domain, other than the client's, that weren't able
97  * to be updated in the most recent game loop because there wasn't enough time to.
98  * <em>Read-only.</em>
99  * @property {number} packetInCount - The number of packets being received from the domain server, in packets per second.
100  * <em>Read-only.</em>
101  * @property {number} packetOutCount - The number of packets being sent to the domain server, in packets per second.
102  * <em>Read-only.</em>
103  * @property {number} mbpsIn - The amount of data being received from the domain server, in megabits per second.
104  * <em>Read-only.</em>
105  * @property {number} mbpsOut - The amount of data being sent to the domain server, in megabits per second.
106  * <em>Read-only.</em>
107  @property {number} assetMbpsIn - The amount of data being received from the asset server, in megabits per second.
108  * <code>0.0</code> if not connected to an avatar mixer.
109  * <em>Read-only.</em>
110  * @property {number} assetMbpsOut - The amount of data being sent to the asset server, in megabits per second.
111  * <code>0.0</code> if not connected to an avatar mixer.
112  * <em>Read-only.</em>
113  * @property {number} audioPing - The ping time to the audio mixer, in ms.
114  * <code>-1</code> if not connected to an audio mixer.
115  * <em>Read-only.</em>
116  * @property {number} avatarPing - The ping time to the avatar mixer, in ms.
117  * <code>-1</code> if not connected to an avatar mixer.
118  * <em>Read-only.</em>
119  * @property {number} entitiesPing - The average ping time to the entity servers, in ms.
120  * <code>-1</code> if not connected to an entity server.
121  * <em>Read-only.</em>
122  * @property {number} assetPing - The ping time to the asset server, in ms.
123  * <code>-1</code> if not connected to an asset server.
124  * <em>Read-only.</em>
125  * @property {number} messagePing - The ping time to the message mixer, in ms.
126  * <code>-1</code> if not connected to a message mixer.
127  * <em>Read-only.</em>
128  * @property {Vec3} position - The position of the user's avatar.
129  * <em>Read-only.</em>
130  * <p><strong>Note:</strong> Property not available in the API.</p>
131  * @property {number} speed - The speed of the user's avatar, in m/s.
132  * <em>Read-only.</em>
133  * @property {number} yaw - The yaw of the user's avatar body, in degrees.
134  * <em>Read-only.</em>
135  * @property {number} avatarMixerInKbps - The amount of data being received from the avatar mixer, in kilobits per second.
136  * <code>-1</code> if not connected to an avatar mixer.
137  * <em>Read-only.</em>
138  * @property {number} avatarMixerInPps - The number of packets being received from the avatar mixer, in packets per second.
139  * <code>-1</code> if not connected to an avatar mixer.
140  * <em>Read-only.</em>
141  * @property {number} avatarMixerOutKbps - The amount of data being sent to the avatar mixer, in kilobits per second.
142  * <code>-1</code> if not connected to an avatar mixer.
143  * <em>Read-only.</em>
144  * @property {number} avatarMixerOutPps - The number of packets being sent to the avatar mixer, in packets per second.
145  * <code>-1</code> if not connected to an avatar mixer.
146  * <em>Read-only.</em>
147  * @property {number} myAvatarSendRate - The number of avatar packets being sent by the user's avatar, in packets per second.
148  * <em>Read-only.</em>
149  *
150  * @property {number} audioMixerInKbps - The amount of data being received from the audio mixer, in kilobits per second.
151  * <code>-1</code> if not connected to an audio mixer.
152  * <em>Read-only.</em>
153  * @property {number} audioMixerInPps - The number of packets being received from the audio mixer, in packets per second.
154  * <code>-1</code> if not connected to an audio mixer.
155  * <em>Read-only.</em>
156  * @property {number} audioMixerOutKbps - The amount of data being sent to the audio mixer, in kilobits per second.
157  * <code>-1</code> if not connected to an audio mixer.
158  * <em>Read-only.</em>
159  * @property {number} audioMixerOutPps - The number of packets being sent to the audio mixer, in packets per second.
160  * <code>-1</code> if not connected to an audio mixer.
161  * <em>Read-only.</em>
162  * @property {number} audioMixerKbps - The total amount of data being sent to and received from the audio mixer, in kilobits
163  * per second.
164  * <code>-1</code> if not connected to an audio mixer.
165  * <em>Read-only.</em>
166  * @property {number} audioMixerPps - The total number of packets being sent to and received from the audio mixer, in packets
167  * per second.
168  * <code>-1</code> if not connected to an audio mixer.
169  * <em>Read-only.</em>
170  * @property {number} audioOutboundPPS - The number of non-silent audio packets being sent by the user, in packets per second.
171  * <code>-1</code> if not connected to an audio mixer.
172  * <em>Read-only.</em>
173  * @property {number} audioSilentOutboundPPS - The number of silent audio packets being sent by the user, in packets per
174  * second.
175  * <code>-1</code> if not connected to an audio mixer.
176  * <em>Read-only.</em>
177  * @property {number} audioInboundPPS - The number of non-silent audio packets being received by the user, in packets per
178  * second.
179  * <code>-1</code> if not connected to an audio mixer.
180  * <em>Read-only.</em>
181  * @property {number} audioAudioInboundPPS - The number of non-silent audio packets being received by the user, in packets per
182  * second.
183  * <code>-1</code> if not connected to an audio mixer.
184  * <em>Read-only.</em>
185  * <p class="important">Deprecated: This property is deprecated and will be removed. Use <code>audioInboundPPS</code>
186  * instead.</p>
187  * @property {number} audioSilentInboundPPS - The number of silent audio packets being received by the user, in packets per
188  * second.
189  * <code>-1</code> if not connected to an audio mixer.
190  * <em>Read-only.</em>
191  * @property {number} audioPacketLoss - The number of audio packets being lost, sent to or received from the audio mixer, in %.
192  * <code>-1</code> if not connected to an audio mixer.
193  * <em>Read-only.</em>
194  * @property {string} audioCodec - The name of the audio codec.
195  * <em>Read-only.</em>
196  * @property {string} audioNoiseGate - The status of the audio noise gate: <code>"Open"</code> or <code>"Closed"</code>.
197  * <em>Read-only.</em>
198  * @property {Vec2} audioInjectors - The number of audio injectors, local and non-local.
199  * <em>Read-only.</em>
200  * <p><strong>Note:</strong> Property not available in the API.</p>
201  * @property {number} entityPacketsInKbps - The average amount of data being received from entity servers, in kilobits per
202  * second. (Multiply by the number of entity servers to get the total amount of data being received.)
203  * <code>-1</code> if not connected to an entity server.
204  * <em>Read-only.</em>
205  *
206  * @property {number} downloads - The number of downloads in progress.
207  * <em>Read-only.</em>
208  * @property {number} downloadLimit - The maximum number of concurrent downloads.
209  * <em>Read-only.</em>
210  * @property {number} downloadsPending - The number of downloads pending.
211  * <em>Read-only.</em>
212  * @property {string[]} downloadUrls - The download URLs.
213  * <em>Read-only.</em>
214  * <p><strong>Note:</strong> Property not available in the API.</p>
215  * @property {number} processing - The number of completed downloads being processed.
216  * <em>Read-only.</em>
217  * @property {number} processingPending - The number of completed downloads waiting to be processed.
218  * <em>Read-only.</em>
219  * @property {number} triangles - The number of triangles in the rendered scene.
220  * <em>Read-only.</em>
221  * @property {number} drawcalls - The number of draw calls made for the rendered scene.
222  * <em>Read-only.</em>
223  * @property {number} materialSwitches - The number of material switches performed for the rendered scene.
224  * <em>Read-only.</em>
225  * @property {number} itemConsidered - The number of item considerations made for rendering.
226  * <em>Read-only.</em>
227  * @property {number} itemOutOfView - The number of items out of view.
228  * <em>Read-only.</em>
229  * @property {number} itemTooSmall - The number of items too small to render.
230  * <em>Read-only.</em>
231  * @property {number} itemRendered - The number of items rendered.
232  * <em>Read-only.</em>
233  * @property {number} shadowConsidered - The number of shadow considerations made for rendering.
234  * <em>Read-only.</em>
235  * @property {number} shadowOutOfView - The number of shadows out of view.
236  * <em>Read-only.</em>
237  * @property {number} shadowTooSmall - The number of shadows too small to render.
238  * <em>Read-only.</em>
239  * @property {number} shadowRendered - The number of shadows rendered.
240  * <em>Read-only.</em>
241  * @property {string} sendingMode - Description of the octree sending mode.
242  * <em>Read-only.</em>
243  * @property {string} packetStats - Description of the octree packet processing state.
244  * <em>Read-only.</em>
245  * @property {number} lodAngle - The target LOD angle, in degrees.
246  * <em>Read-only.</em>
247  * @property {number} lodTargetFramerate - The target LOD frame rate, in Hz.
248  * <em>Read-only.</em>
249  * @property {string} lodStatus - Description of the current LOD.
250  * <em>Read-only.</em>
251  * @property {number} numEntityUpdates - The number of entity updates that happened last frame.
252  * <em>Read-only.</em>
253  * @property {number} numNeededEntityUpdates - The total number of entity updates scheduled for last frame.
254  * <em>Read-only.</em>
255  * @property {string} timingStats - Details of the average time (ms) spent in and number of calls made to different parts of
256  * the code. Provided only if <code>timingExpanded</code> is <code>true</code>. Only the top 10 items are provided if
257  * Developer &gt; Timing &gt; Performance Timer &gt; Only Display Top 10 is enabled.
258  * <em>Read-only.</em>
259  * @property {string} gameUpdateStats - Details of the average time (ms) spent in different parts of the game loop.
260  * <em>Read-only.</em>
261  * @property {number} serverElements - The total number of elements in the server octree.
262  * <em>Read-only.</em>
263  * @property {number} serverInternal - The number of internal elements in the server octree.
264  * <em>Read-only.</em>
265  * @property {number} serverLeaves - The number of leaf elements in the server octree.
266  * <em>Read-only.</em>
267  * @property {number} localElements - The total number of elements in the client octree.
268  * <em>Read-only.</em>
269  * @property {number} localInternal - The number of internal elements in the client octree.
270  * <em>Read-only.</em>
271  * @property {number} localLeaves - The number of leaf elements in the client octree.
272  * <em>Read-only.</em>
273  * @property {number} rectifiedTextureCount - The number of textures that have been resized so that their dimensions is a power
274  * of 2 if smaller than 128 pixels, or a multiple of 128 if greater than 128 pixels.
275  * <em>Read-only.</em>
276  * @property {number} decimatedTextureCount - The number of textures that have been reduced in size because they were over the
277  * maximum allowed dimensions of 8192 pixels on desktop or 2048 pixels on mobile.
278  * <em>Read-only.</em>
279  * @property {number} gpuBuffers - The number of OpenGL buffer objects managed by the GPU back-end.
280  * <em>Read-only.</em>
281  * @property {number} gpuBufferMemory - The total memory size of the <code>gpuBuffers</code>, in MB.
282  * <em>Read-only.</em>
283  * @property {number} gpuTextures - The number of OpenGL textures managed by the GPU back-end. This is the sum of the number of
284  * textures managed for <code>gpuTextureResidentMemory</code>, <code>gpuTextureResourceMemory</code>, and
285  * <code>gpuTextureFramebufferMemory</code>.
286  * <em>Read-only.</em>
287  * @property {number} gpuTextureMemory - The total memory size of the <code>gpuTextures</code>, in MB. This is the sum of
288  * <code>gpuTextureResidentMemory</code>, <code>gpuTextureResourceMemory</code>, and
289  * <code>gpuTextureFramebufferMemory</code>.
290  * <em>Read-only.</em>
291  * @property {number} glContextSwapchainMemory - The estimated memory used by the default OpenGL frame buffer, in MB.
292  * <em>Read-only.</em>
293  * @property {number} qmlTextureMemory - The memory size of textures managed by the offscreen QML surface, in MB.
294  * <em>Read-only.</em>
295  * @property {number} texturePendingTransfers - The memory size of textures pending transfer to the GPU, in MB.
296  * <em>Read-only.</em>
297  * @property {number} gpuTextureResidentMemory - The memory size of the "strict" textures that always have their full
298  * resolution in GPU memory, in MB.
299  * <em>Read-only.</em>
300  * @property {number} gpuTextureFramebufferMemory - The memory size of the frame buffer on the GPU, in MB.
301  * <em>Read-only.</em>
302  * @property {number} gpuTextureResourceMemory - The amount of GPU memory that has been allocated for "variable" textures that
303  * don't necessarily always have their full resolution in GPU memory, in MB.
304  * <em>Read-only.</em>
305  * @property {number} gpuTextureResourceIdealMemory - The amount of memory that "variable" textures would take up if they were
306  * all completely loaded, in MB.
307  * <em>Read-only.</em>
308  * @property {number} gpuTextureResourcePopulatedMemory - How much of the GPU memory allocated has actually been populated, in
309 * MB.
310  * <em>Read-only.</em>
311  * @property {string} gpuTextureMemoryPressureState - The stats of the texture transfer engine.
312  * <ul>
313  * <li><code>"Undersubscribed"</code>: There is texture data that can fit in memory but that isn't on the GPU, so more
314  * GPU texture memory should be allocated if possible.</li>
315  * <li><code>"Transfer"</code>: More GPU texture memory has been allocated and texture data is being transferred.</li>
316  * <li><code>"Idle"</code>: Either all texture data has been transferred to the GPU or there is nor more space
317  * available.</li>
318  * </ul>
319  * <em>Read-only.</em>
320  * @property {number} gpuFreeMemory - The amount of GPU memory available after all allocations, in MB.
321  * <em>Read-only.</em>
322  * <p><strong>Note:</strong> This is not a reliable number because OpenGL doesn't have an official method of getting this
323  * information.</p>
324  * @property {number} gpuTextureExternalMemory - The estimated amount of memory consumed by textures being used but that are
325  * not managed by the GPU library, in MB.
326  * <em>Read-only.</em>
327  * @property {Vec2} gpuFrameSize - The dimensions of the frames being rendered, in pixels.
328  * <em>Read-only.</em>
329  * <p><strong>Note:</strong> Property not available in the API.</p>
330  * @property {number} gpuFrameTime - The time the GPU is spending on a frame, in ms.
331  * <em>Read-only.</em>
332  * @property {number} gpuFrameTimePerPixel - The time the GPU is spending on a pixel, in ns.
333  * <em>Read-only.</em>
334  * @property {number} batchFrameTime - The time being spent batch processing each frame, in ms.
335  * <em>Read-only.</em>
336  * @property {number} engineFrameTime - The time being spent in the render engine each frame, in ms.
337  * <em>Read-only.</em>
338  * @property {number} avatarSimulationTime - The time being spent simulating avatars each frame, in ms.
339  * <em>Read-only.</em>
340  *
341  * @property {number} stylusPicksCount - The number of stylus picks currently in effect.
342  * <em>Read-only.</em>
343  * @property {number} rayPicksCount - The number of ray picks currently in effect.
344  * <em>Read-only.</em>
345  * @property {number} parabolaPicksCount - The number of parabola picks currently in effect.
346  * <em>Read-only.</em>
347  * @property {number} collisionPicksCount - The number of collision picks currently in effect.
348  * <em>Read-only.</em>
349  * @property {Vec3} stylusPicksUpdated - The number of stylus pick intersection that were found in the most recent game loop:
350  * <ul>
351  * <li><code>x</code> = entity intersections.</li>
352  * <li><code>y</code> = avatar intersections.</li>
353  * <li><code>z</code> = HUD intersections.</li>
354  * </ul>
355  * <em>Read-only.</em>
356  * <p><strong>Note:</strong> Property not available in the API.</p>
357  * @property {Vec3} rayPicksUpdated - The number of ray pick intersections that were found in the most recent game loop:
358  * <ul>
359  * <li><code>x</code> = entity intersections.</li>
360  * <li><code>y</code> = avatar intersections.</li>
361  * <li><code>z</code> = HUD intersections.</li>
362  * </ul>
363  * <em>Read-only.</em>
364  * <p><strong>Note:</strong> Property not available in the API.</p>
365  * @property {Vec3} parabolaPicksUpdated - The number of parabola pick intersections that were found in the most recent game
366  * loop:
367  * <ul>
368  * <li><code>x</code> = entity intersections.</li>
369  * <li><code>y</code> = avatar intersections.</li>
370  * <li><code>z</code> = HUD intersections.</li>
371  * </ul>
372  * <em>Read-only.</em>
373  * <p><strong>Note:</strong> Property not available in the API.</p>
374  * @property {Vec3} collisionPicksUpdated - The number of collision pick intersections that were found in the most recent game
375  * loop:
376  * <ul>
377  * <li><code>x</code> = entity intersections.</li>
378  * <li><code>y</code> = avatar intersections.</li>
379  * <li><code>z</code> = HUD intersections.</li>
380  * </ul>
381  * <em>Read-only.</em>
382  * <p><strong>Note:</strong> Property not available in the API.</p>
383  *
384  * @property {boolean} eventQueueDebuggingOn - <code>true</code> if event queue statistics are provided, <code>false</code> if
385  * they're not.
386  * <em>Read-only.</em>
387  * @property {number} mainThreadQueueDepth - The number of events in the main thread's event queue.
388  * Only provided if <code>eventQueueDebuggingOn</code> is <code>true</code>.
389  * <em>Read-only.</em>
390  * @property {number} nodeListThreadQueueDepth - The number of events in the node list thread's event queue.
391  * Only provided if <code>eventQueueDebuggingOn</code> is <code>true</code>.
392  * <em>Read-only.</em>
393  *
394  * @comment The following property is from Stats.qml. It shouldn't be in the API.
395  * @property {string} bgColor
396  * <em>Read-only.</em>
397  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
398  *
399  * @comment The following properties are from QQuickItem. They shouldn't be in the API.
400  * @property {boolean} activeFocus
401  * <em>Read-only.</em>
402  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
403  * @property {boolean} activeFocusOnTab
404  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
405  * @property {object} anchors
406  * <em>Read-only.</em>
407  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
408  * @property {boolean} antialiasing
409  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
410  * @property {number} baselineOffset
411  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
412  * @property {object[]} children
413  * <em>Read-only.</em>
414  * <p><strong>Note:</strong> Property not available in the API.</p>
415  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
416  * @property {boolean} clip
417  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
418  * @property {object} containmentMask
419  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
420  * @property {boolean} enabled
421  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
422  * @property {boolean} focus
423  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
424  * @property {number} height
425  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
426  * @property {number} implicitHeight
427  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
428  * @property {number} implicitWidth
429  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
430  * @property {object} layer
431  * <em>Read-only.</em>
432  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
433  * @property {number} opacity
434  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
435  * @property {number} rotation
436  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
437  * @property {number} scale
438  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
439  * @property {boolean} smooth
440  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
441  * @property {string} state
442  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
443  * @property {number} transformOrigin
444  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
445  * @property {boolean} visible
446  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
447  * @property {number} width
448  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
449  * @property {number} x
450  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
451  * @property {number} y
452  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
453  * @property {number} z
454  * <p class="important">Deprecated: This property is deprecated and will be removed.</p>
455  */
456 // Properties from x onwards are QQuickItem properties.
457 
458 class Stats : public QQuickItem {
459  Q_OBJECT
460  HIFI_QML_DECL
461  Q_PROPERTY(bool expanded READ isExpanded WRITE setExpanded NOTIFY expandedChanged)
462  Q_PROPERTY(bool timingExpanded READ isTimingExpanded NOTIFY timingExpandedChanged)
463  Q_PROPERTY(QString monospaceFont READ monospaceFont CONSTANT)
464 
465  STATS_PROPERTY(int, serverCount, 0)
466  // How often the app is creating new gpu::Frames
467  STATS_PROPERTY(float, renderrate, 0)
468  // How often the display plugin is presenting to the device
469  STATS_PROPERTY(float, presentrate, 0)
470  // How often the display device reprojecting old frames
471  STATS_PROPERTY(float, stutterrate, 0)
472 
473  STATS_PROPERTY(int, appdropped, 0)
474  STATS_PROPERTY(int, longsubmits, 0)
475  STATS_PROPERTY(int, longrenders, 0)
476  STATS_PROPERTY(int, longframes, 0)
477 
478  STATS_PROPERTY(float, presentnewrate, 0)
479  STATS_PROPERTY(float, presentdroprate, 0)
480  STATS_PROPERTY(int, gameLoopRate, 0)
481  STATS_PROPERTY(int, avatarCount, 0)
482  STATS_PROPERTY(int, refreshRateTarget, 0)
483  STATS_PROPERTY(QString, refreshRateMode, QString())
484  STATS_PROPERTY(QString, refreshRateRegime, QString())
485  STATS_PROPERTY(QString, uxMode, QString())
486  STATS_PROPERTY(int, heroAvatarCount, 0)
487  STATS_PROPERTY(int, physicsObjectCount, 0)
488  STATS_PROPERTY(int, updatedAvatarCount, 0)
489  STATS_PROPERTY(int, updatedHeroAvatarCount, 0)
490  STATS_PROPERTY(int, notUpdatedAvatarCount, 0)
491  STATS_PROPERTY(int, packetInCount, 0)
492  STATS_PROPERTY(int, packetOutCount, 0)
493  STATS_PROPERTY(float, mbpsIn, 0)
494  STATS_PROPERTY(float, mbpsOut, 0)
495  STATS_PROPERTY(float, assetMbpsIn, 0)
496  STATS_PROPERTY(float, assetMbpsOut, 0)
497  STATS_PROPERTY(int, audioPing, 0)
498  STATS_PROPERTY(int, avatarPing, 0)
499  STATS_PROPERTY(int, entitiesPing, 0)
500  STATS_PROPERTY(int, assetPing, 0)
501  STATS_PROPERTY(int, messagePing, 0)
502  STATS_PROPERTY(QVector3D, position, QVector3D(0, 0, 0))
503  STATS_PROPERTY(float, speed, 0)
504  STATS_PROPERTY(float, yaw, 0)
505  STATS_PROPERTY(int, avatarMixerInKbps, 0)
506  STATS_PROPERTY(int, avatarMixerInPps, 0)
507  STATS_PROPERTY(int, avatarMixerOutKbps, 0)
508  STATS_PROPERTY(int, avatarMixerOutPps, 0)
509  STATS_PROPERTY(float, myAvatarSendRate, 0)
510 
511  STATS_PROPERTY(int, audioMixerInKbps, 0)
512  STATS_PROPERTY(int, audioMixerInPps, 0)
513  STATS_PROPERTY(int, audioMixerOutKbps, 0)
514  STATS_PROPERTY(int, audioMixerOutPps, 0)
515  STATS_PROPERTY(int, audioMixerKbps, 0)
516  STATS_PROPERTY(int, audioMixerPps, 0)
517  STATS_PROPERTY(int, audioOutboundPPS, 0)
518  STATS_PROPERTY(int, audioSilentOutboundPPS, 0)
519  STATS_PROPERTY(int, audioInboundPPS, 0)
520  STATS_PROPERTY(int, audioAudioInboundPPS, 0)
521  STATS_PROPERTY(int, audioSilentInboundPPS, 0)
522  STATS_PROPERTY(int, audioPacketLoss, 0)
523  STATS_PROPERTY(QString, audioCodec, QString())
524  STATS_PROPERTY(QString, audioNoiseGate, QString())
525  STATS_PROPERTY(QVector2D, audioInjectors, QVector2D());
526  STATS_PROPERTY(int, entityPacketsInKbps, 0)
527 
528  STATS_PROPERTY(int, downloads, 0)
529  STATS_PROPERTY(int, downloadLimit, 0)
530  STATS_PROPERTY(int, downloadsPending, 0)
531  Q_PROPERTY(QStringList downloadUrls READ downloadUrls NOTIFY downloadUrlsChanged)
532  STATS_PROPERTY(int, processing, 0)
533  STATS_PROPERTY(int, processingPending, 0)
534  STATS_PROPERTY(int, triangles, 0)
535  STATS_PROPERTY(quint32 , drawcalls, 0)
536  STATS_PROPERTY(int, materialSwitches, 0)
537  STATS_PROPERTY(int, itemConsidered, 0)
538  STATS_PROPERTY(int, itemOutOfView, 0)
539  STATS_PROPERTY(int, itemTooSmall, 0)
540  STATS_PROPERTY(int, itemRendered, 0)
541  STATS_PROPERTY(int, shadowConsidered, 0)
542  STATS_PROPERTY(int, shadowOutOfView, 0)
543  STATS_PROPERTY(int, shadowTooSmall, 0)
544  STATS_PROPERTY(int, shadowRendered, 0)
545  STATS_PROPERTY(QString, sendingMode, QString())
546  STATS_PROPERTY(QString, packetStats, QString())
547  STATS_PROPERTY(int, lodAngle, 0)
548  STATS_PROPERTY(int, lodTargetFramerate, 0)
549  STATS_PROPERTY(QString, lodStatus, QString())
550  STATS_PROPERTY(quint64, numEntityUpdates, 0)
551  STATS_PROPERTY(quint64, numNeededEntityUpdates, 0)
552  STATS_PROPERTY(QString, timingStats, QString())
553  STATS_PROPERTY(QString, gameUpdateStats, QString())
554  STATS_PROPERTY(int, serverElements, 0)
555  STATS_PROPERTY(int, serverInternal, 0)
556  STATS_PROPERTY(int, serverLeaves, 0)
557  STATS_PROPERTY(int, localElements, 0)
558  STATS_PROPERTY(int, localInternal, 0)
559  STATS_PROPERTY(int, localLeaves, 0)
560  STATS_PROPERTY(int, rectifiedTextureCount, 0)
561  STATS_PROPERTY(int, decimatedTextureCount, 0)
562 
563  STATS_PROPERTY(int, gpuBuffers, 0)
564  STATS_PROPERTY(int, gpuBufferMemory, 0)
565  STATS_PROPERTY(int, gpuTextures, 0)
566  STATS_PROPERTY(int, glContextSwapchainMemory, 0)
567  STATS_PROPERTY(int, qmlTextureMemory, 0)
568  STATS_PROPERTY(int, texturePendingTransfers, 0)
569  STATS_PROPERTY(int, gpuTextureMemory, 0)
570  STATS_PROPERTY(int, gpuTextureResidentMemory, 0)
571  STATS_PROPERTY(int, gpuTextureFramebufferMemory, 0)
572  STATS_PROPERTY(int, gpuTextureResourceMemory, 0)
573  STATS_PROPERTY(int, gpuTextureResourceIdealMemory, 0)
574  STATS_PROPERTY(int, gpuTextureResourcePopulatedMemory, 0)
575  STATS_PROPERTY(int, gpuTextureExternalMemory, 0)
576  STATS_PROPERTY(QString, gpuTextureMemoryPressureState, QString())
577  STATS_PROPERTY(int, gpuFreeMemory, 0)
578  STATS_PROPERTY(QVector2D, gpuFrameSize, QVector2D(0,0))
579  STATS_PROPERTY(float, gpuFrameTime, 0)
580  STATS_PROPERTY(float, gpuFrameTimePerPixel, 0)
581  STATS_PROPERTY(float, batchFrameTime, 0)
582  STATS_PROPERTY(float, engineFrameTime, 0)
583  STATS_PROPERTY(float, avatarSimulationTime, 0)
584 
585  STATS_PROPERTY(int, stylusPicksCount, 0)
586  STATS_PROPERTY(int, rayPicksCount, 0)
587  STATS_PROPERTY(int, parabolaPicksCount, 0)
588  STATS_PROPERTY(int, collisionPicksCount, 0)
589  STATS_PROPERTY(QVector3D, stylusPicksUpdated, QVector3D(0, 0, 0))
590  STATS_PROPERTY(QVector3D, rayPicksUpdated, QVector3D(0, 0, 0))
591  STATS_PROPERTY(QVector3D, parabolaPicksUpdated, QVector3D(0, 0, 0))
592  STATS_PROPERTY(QVector3D, collisionPicksUpdated, QVector3D(0, 0, 0))
593 
594  STATS_PROPERTY(int, mainThreadQueueDepth, -1);
595  STATS_PROPERTY(int, nodeListThreadQueueDepth, -1);
596 
597 #ifdef DEBUG_EVENT_QUEUE
598  STATS_PROPERTY(bool, eventQueueDebuggingOn, true)
599 #else
600  STATS_PROPERTY(bool, eventQueueDebuggingOn, false)
601 #endif // DEBUG_EVENT_QUEUE
602 
603 public:
604  static Stats* getInstance();
605 
606  Stats(QQuickItem* parent = nullptr);
607  bool includeTimingRecord(const QString& name);
608  void setRenderDetails(const render::RenderDetails& details);
609  const QString& monospaceFont() {
610  return _monospaceFont;
611  }
612 
613  void updateStats(bool force = false);
614 
615  bool isExpanded() { return _expanded; }
616  bool isTimingExpanded() { return _showTimingDetails; }
617 
618  void setExpanded(bool expanded) {
619  if (_expanded != expanded) {
620  _expanded = expanded;
621  emit expandedChanged();
622  }
623  }
624 
625  QStringList downloadUrls () { return _downloadUrls; }
626 
627 public slots:
628 
629  /*@jsdoc
630  * Updates statistics to make current values available to scripts even though the statistics overlay may not be displayed.
631  * (Many statistics values are normally updated only if the statistics overlay is displayed.)
632  * <p><strong>Note:</strong> Not all statistics values are updated when the statistics overlay isn't displayed or
633  * expanded.</p>
634  * @function Stats.forceUpdateStats
635  * @example <caption>Report avatar mixer data and packet rates.</caption>
636  * // The statistics to report.
637  * var stats = [
638  * "avatarMixerInKbps",
639  * "avatarMixerInPps",
640  * "avatarMixerOutKbps",
641  * "avatarMixerOutPps"
642  * ];
643  *
644  * // Update the statistics for the script.
645  * Stats.forceUpdateStats();
646  *
647  * // Report the statistics.
648  * for (var i = 0; i < stats.length; i++) {
649  * print(stats[i], "=", Stats[stats[i]]);
650  * }
651  */
652  void forceUpdateStats() { updateStats(true); }
653 
654 signals:
655 
656  // Signals for properties...
657 
658  /*@jsdoc
659  * Triggered when the value of the <code>expanded</code> property changes.
660  * @function Stats.expandedChanged
661  * @returns {Signal}
662  */
663  void expandedChanged();
664 
665  /*@jsdoc
666  * Triggered when the value of the <code>timingExpanded</code> property changes.
667  * @function Stats.timingExpandedChanged
668  * @returns {Signal}
669  */
670  void timingExpandedChanged();
671 
672  /*@jsdoc
673  * Triggered when the value of the <code>serverCount</code> property changes.
674  * @function Stats.serverCountChanged
675  * @returns {Signal}
676  */
677  void serverCountChanged();
678 
679  /*@jsdoc
680  * Triggered when the value of the <code>renderrate</code> property changes.
681  * @function Stats.renderrateChanged
682  * @returns {Signal}
683  */
684  void renderrateChanged();
685 
686  /*@jsdoc
687  * Triggered when the value of the <code>presentrate</code> property changes.
688  * @function Stats.presentrateChanged
689  * @returns {Signal}
690  */
691  void presentrateChanged();
692 
693  /*@jsdoc
694  * Triggered when the value of the <code>stutterrate</code> property changes.
695  * @function Stats.stutterrateChanged
696  * @returns {Signal}
697  */
698  void stutterrateChanged();
699 
700  /*@jsdoc
701  * Triggered when the value of the <code>appdropped</code> property changes.
702  * @function Stats.appdroppedChanged
703  * @returns {Signal}
704  */
705  void appdroppedChanged();
706 
707  /*@jsdoc
708  * Triggered when the value of the <code>longsubmits</code> property changes.
709  * @function Stats.longsubmitsChanged
710  * @returns {Signal}
711  */
712  void longsubmitsChanged();
713 
714  /*@jsdoc
715  * Triggered when the value of the <code>longrenders</code> property changes.
716  * @function Stats.longrendersChanged
717  * @returns {Signal}
718  */
719  void longrendersChanged();
720 
721  /*@jsdoc
722  * Triggered when the value of the <code>longframes</code> property changes.
723  * @function Stats.longframesChanged
724  * @returns {Signal}
725  */
726  void longframesChanged();
727 
728  /*@jsdoc
729  * Triggered when the value of the <code>presentnewrate</code> property changes.
730  * @function Stats.presentnewrateChanged
731  * @returns {Signal}
732  */
733  void presentnewrateChanged();
734 
735  /*@jsdoc
736  * Triggered when the value of the <code>presentdroprate</code> property changes.
737  * @function Stats.presentdroprateChanged
738  * @returns {Signal}
739  */
740  void presentdroprateChanged();
741 
742  /*@jsdoc
743  * Triggered when the value of the <code>gameLoopRate</code> property changes.
744  * @function Stats.gameLoopRateChanged
745  * @returns {Signal}
746  */
747  void gameLoopRateChanged();
748 
749  /*@jsdoc
750  * Triggered when the value of the <code>avatarCount</code> property changes.
751  * @function Stats.avatarCountChanged
752  * @returns {Signal}
753  */
754  void avatarCountChanged();
755 
756  /*@jsdoc
757  * Triggered when the value of the <code>refreshRateTarget</code> property changes.
758  * @function Stats.refreshRateTargetChanged
759  * @returns {Signal}
760  */
761  void refreshRateTargetChanged();
762 
763  /*@jsdoc
764  * Triggered when the value of the <code>refreshRateMode</code> property changes.
765  * @function Stats.refreshRateModeChanged
766  * @returns {Signal}
767  */
768  void refreshRateModeChanged();
769 
770  /*@jsdoc
771  * Triggered when the value of the <code>refreshRateRegime</code> property changes.
772  * @function Stats.refreshRateRegimeChanged
773  * @returns {Signal}
774  */
775  void refreshRateRegimeChanged();
776 
777  /*@jsdoc
778  * Triggered when the value of the <code>uxMode</code> property changes.
779  * @function Stats.uxModeChanged
780  * @returns {Signal}
781  */
782  void uxModeChanged();
783 
784  /*@jsdoc
785  * Triggered when the value of the <code>heroAvatarCount</code> property changes.
786  * @function Stats.heroAvatarCountChanged
787  * @returns {Signal}
788  */
789  void heroAvatarCountChanged();
790 
791  /*@jsdoc
792  * Triggered when the value of the <code>physicsObjectCount</code> property changes.
793  * @function Stats.physicsObjectCountChanged
794  * @returns {Signal}
795  */
796  void physicsObjectCountChanged();
797 
798  /*@jsdoc
799  * Triggered when the value of the <code>updatedAvatarCount</code> property changes.
800  * @function Stats.updatedAvatarCountChanged
801  * @returns {Signal}
802  */
803  void updatedAvatarCountChanged();
804 
805  /*@jsdoc
806  * Triggered when the value of the <code>updatedHeroAvatarCount</code> property changes.
807  * @function Stats.updatedHeroAvatarCountChanged
808  * @returns {Signal}
809  */
810  void updatedHeroAvatarCountChanged();
811 
812  /*@jsdoc
813  * Triggered when the value of the <code>notUpdatedAvatarCount</code> property changes.
814  * @function Stats.notUpdatedAvatarCountChanged
815  * @returns {Signal}
816  */
817  void notUpdatedAvatarCountChanged();
818 
819  /*@jsdoc
820  * Triggered when the value of the <code>packetInCount</code> property changes.
821  * @function Stats.packetInCountChanged
822  * @returns {Signal}
823  */
824  void packetInCountChanged();
825 
826  /*@jsdoc
827  * Triggered when the value of the <code>packetOutCount</code> property changes.
828  * @function Stats.packetOutCountChanged
829  * @returns {Signal}
830  */
831  void packetOutCountChanged();
832 
833  /*@jsdoc
834  * Triggered when the value of the <code>mbpsIn</code> property changes.
835  * @function Stats.mbpsInChanged
836  * @returns {Signal}
837  */
838  void mbpsInChanged();
839 
840  /*@jsdoc
841  * Triggered when the value of the <code>mbpsOut</code> property changes.
842  * @function Stats.mbpsOutChanged
843  * @returns {Signal}
844  */
845  void mbpsOutChanged();
846 
847  /*@jsdoc
848  * Triggered when the value of the <code>assetMbpsIn</code> property changes.
849  * @function Stats.assetMbpsInChanged
850  * @returns {Signal}
851  */
852  void assetMbpsInChanged();
853 
854  /*@jsdoc
855  * Triggered when the value of the <code>assetMbpsOut</code> property changes.
856  * @function Stats.assetMbpsOutChanged
857  * @returns {Signal}
858  */
859  void assetMbpsOutChanged();
860 
861  /*@jsdoc
862  * Triggered when the value of the <code>audioPing</code> property changes.
863  * @function Stats.audioPingChanged
864  * @returns {Signal}
865  */
866  void audioPingChanged();
867 
868  /*@jsdoc
869  * Triggered when the value of the <code>avatarPing</code> property changes.
870  * @function Stats.avatarPingChanged
871  * @returns {Signal}
872  */
873  void avatarPingChanged();
874 
875  /*@jsdoc
876  * Triggered when the value of the <code>entitiesPing</code> property changes.
877  * @function Stats.entitiesPingChanged
878  * @returns {Signal}
879  */
880  void entitiesPingChanged();
881 
882  /*@jsdoc
883  * Triggered when the value of the <code>assetPing</code> property changes.
884  * @function Stats.assetPingChanged
885  * @returns {Signal}
886  */
887  void assetPingChanged();
888 
889  /*@jsdoc
890  * Triggered when the value of the <code>messagePing</code> property changes.
891  * @function Stats.messagePingChanged
892  * @returns {Signal}
893  */
894  void messagePingChanged();
895 
896  /*@jsdoc
897  * Triggered when the value of the <code>position</code> property changes.
898  * @function Stats.positionChanged
899  * @returns {Signal}
900  */
901  void positionChanged();
902 
903  /*@jsdoc
904  * Triggered when the value of the <code>speed</code> property changes.
905  * @function Stats.speedChanged
906  * @returns {Signal}
907  */
908  void speedChanged();
909 
910  /*@jsdoc
911  * Triggered when the value of the <code>yaw</code> property changes.
912  * @function Stats.yawChanged
913  * @returns {Signal}
914  */
915  void yawChanged();
916 
917  /*@jsdoc
918  * Triggered when the value of the <code>avatarMixerInKbps</code> property changes.
919  * @function Stats.avatarMixerInKbpsChanged
920  * @returns {Signal}
921  */
922  void avatarMixerInKbpsChanged();
923 
924  /*@jsdoc
925  * Triggered when the value of the <code>avatarMixerInPps</code> property changes.
926  * @function Stats.avatarMixerInPpsChanged
927  * @returns {Signal}
928  */
929  void avatarMixerInPpsChanged();
930 
931  /*@jsdoc
932  * Triggered when the value of the <code>avatarMixerOutKbps</code> property changes.
933  * @function Stats.avatarMixerOutKbpsChanged
934  * @returns {Signal}
935  */
936  void avatarMixerOutKbpsChanged();
937 
938  /*@jsdoc
939  * Triggered when the value of the <code>avatarMixerOutPps</code> property changes.
940  * @function Stats.avatarMixerOutPpsChanged
941  * @returns {Signal}
942  */
943  void avatarMixerOutPpsChanged();
944 
945  /*@jsdoc
946  * Triggered when the value of the <code>myAvatarSendRate</code> property changes.
947  * @function Stats.myAvatarSendRateChanged
948  * @returns {Signal}
949  */
950  void myAvatarSendRateChanged();
951 
952  /*@jsdoc
953  * Triggered when the value of the <code>audioMixerInKbps</code> property changes.
954  * @function Stats.audioMixerInKbpsChanged
955  * @returns {Signal}
956  */
957  void audioMixerInKbpsChanged();
958 
959  /*@jsdoc
960  * Triggered when the value of the <code>audioMixerInPps</code> property changes.
961  * @function Stats.audioMixerInPpsChanged
962  * @returns {Signal}
963  */
964  void audioMixerInPpsChanged();
965 
966  /*@jsdoc
967  * Triggered when the value of the <code>audioMixerOutKbps</code> property changes.
968  * @function Stats.audioMixerOutKbpsChanged
969  * @returns {Signal}
970  */
971  void audioMixerOutKbpsChanged();
972 
973  /*@jsdoc
974  * Triggered when the value of the <code>audioMixerOutPps</code> property changes.
975  * @function Stats.audioMixerOutPpsChanged
976  * @returns {Signal}
977  */
978  void audioMixerOutPpsChanged();
979 
980  /*@jsdoc
981  * Triggered when the value of the <code>audioMixerKbps</code> property changes.
982  * @function Stats.audioMixerKbpsChanged
983  * @returns {Signal}
984  */
985  void audioMixerKbpsChanged();
986 
987  /*@jsdoc
988  * Triggered when the value of the <code>audioMixerPps</code> property changes.
989  * @function Stats.audioMixerPpsChanged
990  * @returns {Signal}
991  */
992  void audioMixerPpsChanged();
993 
994  /*@jsdoc
995  * Triggered when the value of the <code>audioOutboundPPS</code> property changes.
996  * @function Stats.audioOutboundPPSChanged
997  * @returns {Signal}
998  */
999  void audioOutboundPPSChanged();
1000 
1001  /*@jsdoc
1002  * Triggered when the value of the <code>audioSilentOutboundPPS</code> property changes.
1003  * @function Stats.audioSilentOutboundPPSChanged
1004  * @returns {Signal}
1005  */
1006  void audioSilentOutboundPPSChanged();
1007 
1008  /*@jsdoc
1009  * Triggered when the value of the <code>audioInboundPPS</code> property changes.
1010  * @function Stats.audioInboundPPSChanged
1011  * @returns {Signal}
1012  */
1013  void audioInboundPPSChanged();
1014 
1015  /*@jsdoc
1016  * Triggered when the value of the <code>audioAudioInboundPPS</code> property changes.
1017  * @function Stats.audioAudioInboundPPSChanged
1018  * @returns {Signal}
1019  * @deprecated This signal is deprecated and will be removed. Use
1020  * {@link Stats.audioInboundPPSChanged|audioInboundPPSChanged} instead.
1021  */
1022  void audioAudioInboundPPSChanged();
1023 
1024  /*@jsdoc
1025  * Triggered when the value of the <code>audioSilentInboundPPS</code> property changes.
1026  * @function Stats.audioSilentInboundPPSChanged
1027  * @returns {Signal}
1028  */
1029  void audioSilentInboundPPSChanged();
1030 
1031  /*@jsdoc
1032  * Triggered when the value of the <code>audioPacketLoss</code> property changes.
1033  * @function Stats.audioPacketLossChanged
1034  * @returns {Signal}
1035  */
1036  void audioPacketLossChanged();
1037 
1038  /*@jsdoc
1039  * Triggered when the value of the <code>audioCodec</code> property changes.
1040  * @function Stats.audioCodecChanged
1041  * @returns {Signal}
1042  */
1043  void audioCodecChanged();
1044 
1045  /*@jsdoc
1046  * Triggered when the value of the <code>audioNoiseGate</code> property changes.
1047  * @function Stats.audioNoiseGateChanged
1048  * @returns {Signal}
1049  */
1050  void audioNoiseGateChanged();
1051 
1052  /*@jsdoc
1053  * Triggered when the value of the <code>audioInjectors</code> property changes.
1054  * @function Stats.audioInjectorsChanged
1055  * @returns {Signal}
1056  */
1057  void audioInjectorsChanged();
1058 
1059  /*@jsdoc
1060  * Triggered when the value of the <code>entityPacketsInKbps</code> property changes.
1061  * @function Stats.entityPacketsInKbpsChanged
1062  * @returns {Signal}
1063  */
1064  void entityPacketsInKbpsChanged();
1065 
1066  /*@jsdoc
1067  * Triggered when the value of the <code>downloads</code> property changes.
1068  * @function Stats.downloadsChanged
1069  * @returns {Signal}
1070  */
1071  void downloadsChanged();
1072 
1073  /*@jsdoc
1074  * Triggered when the value of the <code>downloadLimit</code> property changes.
1075  * @function Stats.downloadLimitChanged
1076  * @returns {Signal}
1077  */
1078  void downloadLimitChanged();
1079 
1080  /*@jsdoc
1081  * Triggered when the value of the <code>downloadsPending</code> property changes.
1082  * @function Stats.downloadsPendingChanged
1083  * @returns {Signal}
1084  */
1085  void downloadsPendingChanged();
1086 
1087  /*@jsdoc
1088  * Triggered when the value of the <code>downloadUrls</code> property changes.
1089  * @function Stats.downloadUrlsChanged
1090  * @returns {Signal}
1091  */
1092  void downloadUrlsChanged();
1093 
1094  /*@jsdoc
1095  * Triggered when the value of the <code>processing</code> property changes.
1096  * @function Stats.processingChanged
1097  * @returns {Signal}
1098  */
1099  void processingChanged();
1100 
1101  /*@jsdoc
1102  * Triggered when the value of the <code>processingPending</code> property changes.
1103  * @function Stats.processingPendingChanged
1104  * @returns {Signal}
1105  */
1106  void processingPendingChanged();
1107 
1108  /*@jsdoc
1109  * Triggered when the value of the <code>triangles</code> property changes.
1110  * @function Stats.trianglesChanged
1111  * @returns {Signal}
1112  */
1113  void trianglesChanged();
1114 
1115  /*@jsdoc
1116  * Triggered when the value of the <code>drawcalls</code> property changes.
1117  * @function Stats.drawcallsChanged
1118  * @returns {Signal}
1119  */
1120  void drawcallsChanged();
1121 
1122  /*@jsdoc
1123  * Triggered when the value of the <code>materialSwitches</code> property changes.
1124  * @function Stats.materialSwitchesChanged
1125  * @returns {Signal}
1126  */
1127  void materialSwitchesChanged();
1128 
1129  /*@jsdoc
1130  * Triggered when the value of the <code>itemConsidered</code> property changes.
1131  * @function Stats.itemConsideredChanged
1132  * @returns {Signal}
1133  */
1134  void itemConsideredChanged();
1135 
1136  /*@jsdoc
1137  * Triggered when the value of the <code>itemOutOfView</code> property changes.
1138  * @function Stats.itemOutOfViewChanged
1139  * @returns {Signal}
1140  */
1141  void itemOutOfViewChanged();
1142 
1143  /*@jsdoc
1144  * Triggered when the value of the <code>itemTooSmall</code> property changes.
1145  * @function Stats.itemTooSmallChanged
1146  * @returns {Signal}
1147  */
1148  void itemTooSmallChanged();
1149 
1150  /*@jsdoc
1151  * Triggered when the value of the <code>itemRendered</code> property changes.
1152  * @function Stats.itemRenderedChanged
1153  * @returns {Signal}
1154  */
1155  void itemRenderedChanged();
1156 
1157  /*@jsdoc
1158  * Triggered when the value of the <code>shadowConsidered</code> property changes.
1159  * @function Stats.shadowConsideredChanged
1160  * @returns {Signal}
1161  */
1162  void shadowConsideredChanged();
1163 
1164  /*@jsdoc
1165  * Triggered when the value of the <code>shadowOutOfView</code> property changes.
1166  * @function Stats.shadowOutOfViewChanged
1167  * @returns {Signal}
1168  */
1169  void shadowOutOfViewChanged();
1170 
1171  /*@jsdoc
1172  * Triggered when the value of the <code>shadowTooSmall</code> property changes.
1173  * @function Stats.shadowTooSmallChanged
1174  * @returns {Signal}
1175  */
1176  void shadowTooSmallChanged();
1177 
1178  /*@jsdoc
1179  * Triggered when the value of the <code>shadowRendered</code> property changes.
1180  * @function Stats.shadowRenderedChanged
1181  * @returns {Signal}
1182  */
1183  void shadowRenderedChanged();
1184 
1185  /*@jsdoc
1186  * Triggered when the value of the <code>sendingMode</code> property changes.
1187  * @function Stats.sendingModeChanged
1188  * @returns {Signal}
1189  */
1190  void sendingModeChanged();
1191 
1192  /*@jsdoc
1193  * Triggered when the value of the <code>packetStats</code> property changes.
1194  * @function Stats.packetStatsChanged
1195  * @returns {Signal}
1196  */
1197  void packetStatsChanged();
1198 
1199  /*@jsdoc
1200  * Triggered when the value of the <code>lodAngle</code> property changes.
1201  * @function Stats.lodAngleChanged
1202  * @returns {Signal}
1203  */
1204  void lodAngleChanged();
1205 
1206  /*@jsdoc
1207  * Triggered when the value of the <code>lodTargetFramerate</code> property changes.
1208  * @function Stats.lodTargetFramerateChanged
1209  * @returns {Signal}
1210  */
1211  void lodTargetFramerateChanged();
1212 
1213  /*@jsdoc
1214  * Triggered when the value of the <code>lodStatus</code> property changes.
1215  * @function Stats.lodStatusChanged
1216  * @returns {Signal}
1217  */
1218  void lodStatusChanged();
1219 
1220  /*@jsdoc
1221  * Triggered when the value of the <code>numEntityUpdates</code> property changes.
1222  * @function Stats.numEntityUpdatesChanged
1223  * @returns {Signal}
1224  */
1225  void numEntityUpdatesChanged();
1226 
1227  /*@jsdoc
1228  * Triggered when the value of the <code>numNeededEntityUpdates</code> property changes.
1229  * @function Stats.numNeededEntityUpdatesChanged
1230  * @returns {Signal}
1231  */
1232  void numNeededEntityUpdatesChanged();
1233 
1234  /*@jsdoc
1235  * Triggered when the value of the <code>timingStats</code> property changes.
1236  * @function Stats.timingStatsChanged
1237  * @returns {Signal}
1238  */
1239  void timingStatsChanged();
1240 
1241  /*@jsdoc
1242  * Triggered when the value of the <code>gameUpdateStats</code> property changes.
1243  * @function Stats.gameUpdateStatsChanged
1244  * @returns {Signal}
1245  */
1246  void gameUpdateStatsChanged();
1247 
1248  /*@jsdoc
1249  * Triggered when the value of the <code>serverElements</code> property changes.
1250  * @function Stats.serverElementsChanged
1251  * @returns {Signal}
1252  */
1253  void serverElementsChanged();
1254 
1255  /*@jsdoc
1256  * Triggered when the value of the <code>serverInternal</code> property changes.
1257  * @function Stats.serverInternalChanged
1258  * @returns {Signal}
1259  */
1260  void serverInternalChanged();
1261 
1262  /*@jsdoc
1263  * Triggered when the value of the <code>serverLeaves</code> property changes.
1264  * @function Stats.serverLeavesChanged
1265  * @returns {Signal}
1266  */
1267  void serverLeavesChanged();
1268 
1269  /*@jsdoc
1270  * Triggered when the value of the <code>localElements</code> property changes.
1271  * @function Stats.localElementsChanged
1272  * @returns {Signal}
1273  */
1274  void localElementsChanged();
1275 
1276  /*@jsdoc
1277  * Triggered when the value of the <code>localInternal</code> property changes.
1278  * @function Stats.localInternalChanged
1279  * @returns {Signal}
1280  */
1281  void localInternalChanged();
1282 
1283  /*@jsdoc
1284  * Triggered when the value of the <code>localLeaves</code> property changes.
1285  * @function Stats.localLeavesChanged
1286  * @returns {Signal}
1287  */
1288  void localLeavesChanged();
1289 
1290  /*@jsdoc
1291  * Triggered when the value of the <code>rectifiedTextureCount</code> property changes.
1292  * @function Stats.rectifiedTextureCountChanged
1293  * @returns {Signal}
1294  */
1295  void rectifiedTextureCountChanged();
1296 
1297  /*@jsdoc
1298  * Triggered when the value of the <code>decimatedTextureCount</code> property changes.
1299  * @function Stats.decimatedTextureCountChanged
1300  * @returns {Signal}
1301  */
1302  void decimatedTextureCountChanged();
1303 
1304  /*@jsdoc
1305  * Triggered when the value of the <code>gpuBuffers</code> property changes.
1306  * @function Stats.gpuBuffersChanged
1307  * @returns {Signal}
1308  */
1309  void gpuBuffersChanged();
1310 
1311  /*@jsdoc
1312  * Triggered when the value of the <code>gpuBufferMemory</code> property changes.
1313  * @function Stats.gpuBufferMemoryChanged
1314  * @returns {Signal}
1315  */
1316  void gpuBufferMemoryChanged();
1317 
1318  /*@jsdoc
1319  * Triggered when the value of the <code>gpuTextures</code> property changes.
1320  * @function Stats.gpuTexturesChanged
1321  * @returns {Signal}
1322  */
1323  void gpuTexturesChanged();
1324 
1325  /*@jsdoc
1326  * Triggered when the value of the <code>glContextSwapchainMemory</code> property changes.
1327  * @function Stats.glContextSwapchainMemoryChanged
1328  * @returns {Signal}
1329  */
1330  void glContextSwapchainMemoryChanged();
1331 
1332  /*@jsdoc
1333  * Triggered when the value of the <code>qmlTextureMemory</code> property changes.
1334  * @function Stats.qmlTextureMemoryChanged
1335  * @returns {Signal}
1336  */
1337  void qmlTextureMemoryChanged();
1338 
1339  /*@jsdoc
1340  * Triggered when the value of the <code>texturePendingTransfers</code> property changes.
1341  * @function Stats.texturePendingTransfersChanged
1342  * @returns {Signal}
1343  */
1344  void texturePendingTransfersChanged();
1345 
1346  /*@jsdoc
1347  * Triggered when the value of the <code>gpuTextureMemory</code> property changes.
1348  * @function Stats.gpuTextureMemoryChanged
1349  * @returns {Signal}
1350  */
1351  void gpuTextureMemoryChanged();
1352 
1353  /*@jsdoc
1354  * Triggered when the value of the <code>gpuTextureResidentMemory</code> property changes.
1355  * @function Stats.gpuTextureResidentMemoryChanged
1356  * @returns {Signal}
1357  */
1358  void gpuTextureResidentMemoryChanged();
1359 
1360  /*@jsdoc
1361  * Triggered when the value of the <code>gpuTextureFramebufferMemory</code> property changes.
1362  * @function Stats.gpuTextureFramebufferMemoryChanged
1363  * @returns {Signal}
1364  */
1365  void gpuTextureFramebufferMemoryChanged();
1366 
1367  /*@jsdoc
1368  * Triggered when the value of the <code>gpuTextureResourceMemory</code> property changes.
1369  * @function Stats.gpuTextureResourceMemoryChanged
1370  * @returns {Signal}
1371  */
1372  void gpuTextureResourceMemoryChanged();
1373 
1374  /*@jsdoc
1375  * Triggered when the value of the <code>gpuTextureResourceIdealMemory</code> property changes.
1376  * @function Stats.gpuTextureResourceIdealMemoryChanged
1377  * @returns {Signal}
1378  */
1379  void gpuTextureResourceIdealMemoryChanged();
1380 
1381  /*@jsdoc
1382  * Triggered when the value of the <code>gpuTextureResourcePopulatedMemory</code> property changes.
1383  * @function Stats.gpuTextureResourcePopulatedMemoryChanged
1384  * @returns {Signal}
1385  */
1386  void gpuTextureResourcePopulatedMemoryChanged();
1387 
1388  /*@jsdoc
1389  * Triggered when the value of the <code>gpuTextureExternalMemory</code> property changes.
1390  * @function Stats.gpuTextureExternalMemoryChanged
1391  * @returns {Signal}
1392  */
1393  void gpuTextureExternalMemoryChanged();
1394 
1395  /*@jsdoc
1396  * Triggered when the value of the <code>gpuTextureMemoryPressureState</code> property changes.
1397  * @function Stats.gpuTextureMemoryPressureStateChanged
1398  * @returns {Signal}
1399  */
1400  void gpuTextureMemoryPressureStateChanged();
1401 
1402  /*@jsdoc
1403  * Triggered when the value of the <code>gpuFreeMemory</code> property changes.
1404  * @function Stats.gpuFreeMemoryChanged
1405  * @returns {Signal}
1406  */
1407  void gpuFreeMemoryChanged();
1408 
1409  /*@jsdoc
1410  * Triggered when the value of the <code>gpuFrameSize</code> property changes.
1411  * @function Stats.gpuFrameSizeChanged
1412  * @returns {Signal}
1413  */
1414  void gpuFrameSizeChanged();
1415 
1416  /*@jsdoc
1417  * Triggered when the value of the <code>gpuFrameTime</code> property changes.
1418  * @function Stats.gpuFrameTimeChanged
1419  * @returns {Signal}
1420  */
1421  void gpuFrameTimeChanged();
1422 
1423  /*@jsdoc
1424  * Triggered when the value of the <code>gpuFrameTimePerPixel</code> property changes.
1425  * @function Stats.gpuFrameTimePerPixelChanged
1426  * @returns {Signal}
1427  */
1428  void gpuFrameTimePerPixelChanged();
1429 
1430  /*@jsdoc
1431  * Triggered when the value of the <code>batchFrameTime</code> property changes.
1432  * @function Stats.batchFrameTimeChanged
1433  * @returns {Signal}
1434  */
1435  void batchFrameTimeChanged();
1436 
1437  /*@jsdoc
1438  * Triggered when the value of the <code>engineFrameTime</code> property changes.
1439  * @function Stats.engineFrameTimeChanged
1440  * @returns {Signal}
1441  */
1442  void engineFrameTimeChanged();
1443 
1444  /*@jsdoc
1445  * Triggered when the value of the <code>avatarSimulationTime</code> property changes.
1446  * @function Stats.avatarSimulationTimeChanged
1447  * @returns {Signal}
1448  */
1449  void avatarSimulationTimeChanged();
1450 
1451  /*@jsdoc
1452  * Triggered when the value of the <code>stylusPicksCount</code> property changes.
1453  * @function Stats.stylusPicksCountChanged
1454  * @returns {Signal}
1455  */
1456  void stylusPicksCountChanged();
1457 
1458  /*@jsdoc
1459  * Triggered when the value of the <code>rayPicksCount</code> property changes.
1460  * @function Stats.rayPicksCountChanged
1461  * @returns {Signal}
1462  */
1463  void rayPicksCountChanged();
1464 
1465  /*@jsdoc
1466  * Triggered when the value of the <code>parabolaPicksCount</code> property changes.
1467  * @function Stats.parabolaPicksCountChanged
1468  * @returns {Signal}
1469  */
1470  void parabolaPicksCountChanged();
1471 
1472  /*@jsdoc
1473  * Triggered when the value of the <code>collisionPicksCount</code> property changes.
1474  * @function Stats.collisionPicksCountChanged
1475  * @returns {Signal}
1476  */
1477  void collisionPicksCountChanged();
1478 
1479  /*@jsdoc
1480  * Triggered when the value of the <code>stylusPicksUpdated</code> property changes.
1481  * @function Stats.stylusPicksUpdatedChanged
1482  * @returns {Signal}
1483  */
1484  void stylusPicksUpdatedChanged();
1485 
1486  /*@jsdoc
1487  * Triggered when the value of the <code>rayPicksUpdated</code> property changes.
1488  * @function Stats.rayPicksUpdatedChanged
1489  * @returns {Signal}
1490  */
1491  void rayPicksUpdatedChanged();
1492 
1493  /*@jsdoc
1494  * Triggered when the value of the <code>parabolaPicksUpdated</code> property changes.
1495  * @function Stats.parabolaPicksUpdatedChanged
1496  * @returns {Signal}
1497  */
1498  void parabolaPicksUpdatedChanged();
1499 
1500  /*@jsdoc
1501  * Triggered when the value of the <code>collisionPicksUpdated</code> property changes.
1502  * @function Stats.collisionPicksUpdatedChanged
1503  * @returns {Signal}
1504  */
1505  void collisionPicksUpdatedChanged();
1506 
1507  /*@jsdoc
1508  * Triggered when the value of the <code>mainThreadQueueDepth</code> property changes.
1509  * @function Stats.mainThreadQueueDepthChanged
1510  * @returns {Signal}
1511  */
1512  void mainThreadQueueDepthChanged();
1513 
1514  /*@jsdoc
1515  * Triggered when the value of the <code>nodeListThreadQueueDepth</code> property changes.
1516  * @function Stats.nodeListThreadQueueDepth
1517  * @returns {Signal}
1518  */
1519  void nodeListThreadQueueDepthChanged();
1520 
1521  /*@jsdoc
1522  * Triggered when the value of the <code>eventQueueDebuggingOn</code> property changes.
1523  * @function Stats.eventQueueDebuggingOnChanged
1524  * @returns {Signal}
1525  */
1526  void eventQueueDebuggingOnChanged();
1527 
1528 
1529  // Stats.qml signals: shouldn't be in the API.
1530 
1531  /*@jsdoc
1532  * Triggered when the value of the <code>bgColor</code> property changes.
1533  * @function Stats.bgColorChanged
1534  * @returns {Signal}
1535  * @deprecated This signal is deprecated and will be removed.
1536  */
1537 
1538 
1539  // QQuickItem signals: shouldn't be in the API.
1540 
1541  /*@jsdoc
1542  * Triggered when the value of the <code>activeFocus</code> property changes.
1543  * @function Stats.activeFocusChanged
1544  * @param {boolean} activeFocus - Active focus.
1545  * @returns {Signal}
1546  * @deprecated This signal is deprecated and will be removed.
1547  */
1548 
1549  /*@jsdoc
1550  * Triggered when the value of the <code>activeFocusOnTab</code> property changes.
1551  * @function Stats.activeFocusOnTabChanged
1552  * @param {boolean} activeFocusOnTab - Active focus on tab.
1553  * @returns {Signal}
1554  * @deprecated This signal is deprecated and will be removed.
1555  */
1556 
1557  /*@jsdoc
1558  * Triggered when the value of the <code>antialiasing</code> property changes.
1559  * @function Stats.antialiasingChanged
1560  * @param {boolean} antialiasing - Antialiasing.
1561  * @returns {Signal}
1562  * @deprecated This signal is deprecated and will be removed.
1563  */
1564 
1565  /*@jsdoc
1566  * Triggered when the value of the <code>baselineOffset</code> property changes.
1567  * @function Stats.baselineOffsetChanged
1568  * @param {number} baselineOffset - Baseline offset.
1569  * @returns {Signal}
1570  * @deprecated This signal is deprecated and will be removed.
1571  */
1572 
1573  /*@jsdoc
1574  * Triggered when the value of the <code>children</code> property changes.
1575  * @function Stats.childrenChanged
1576  * @returns {Signal}
1577  * @deprecated This signal is deprecated and will be removed.
1578  */
1579 
1580  /*@jsdoc
1581  * Triggered when the position and size of the rectangle containing the children changes.
1582  * @function Stats.childrenRectChanged
1583  * @param {Rect} childrenRect - Children rect.
1584  * @returns {Signal}
1585  * @deprecated This signal is deprecated and will be removed.
1586  */
1587 
1588 
1589  /*@jsdoc
1590  * Triggered when the value of the <code>clip</code> property changes.
1591  * @function Stats.clipChanged
1592  * @param {boolean} clip - Clip.
1593  * @returns {Signal}
1594  * @deprecated This signal is deprecated and will be removed.
1595  */
1596 
1597  /*@jsdoc
1598  * Triggered when the value of the <code>containmentMask</code> property changes.
1599  * @function Stats.containmentMaskChanged
1600  * @returns {Signal}
1601  * @deprecated This signal is deprecated and will be removed.
1602  */
1603 
1604  /*@jsdoc
1605  * Triggered when the value of the <code>enabled</code> property changes.
1606  * @function Stats.enabledChanged
1607  * @returns {Signal}
1608  * @deprecated This signal is deprecated and will be removed.
1609  */
1610 
1611  /*@jsdoc
1612  * Triggered when the value of the <code>focus</code> property changes.
1613  * @function Stats.focusChanged
1614  * @param {boolean} focus - Focus.
1615  * @returns {Signal}
1616  * @deprecated This signal is deprecated and will be removed.
1617  */
1618 
1619  /*@jsdoc
1620  * Triggered when the value of the <code>height</code> property changes.
1621  * @function Stats.heightChanged
1622  * @returns {Signal}
1623  * @deprecated This signal is deprecated and will be removed.
1624  */
1625 
1626  /*@jsdoc
1627  * Triggered when the value of the <code>implicitHeight</code> property changes.
1628  * @function Stats.implicitHeightChanged
1629  * @returns {Signal}
1630  * @deprecated This signal is deprecated and will be removed.
1631  */
1632 
1633  /*@jsdoc
1634  * Triggered when the value of the <code>implicitWidth</code> property changes.
1635  * @function Stats.implicitWidthChanged
1636  * @returns {Signal}
1637  * @deprecated This signal is deprecated and will be removed.
1638  */
1639 
1640  /*@jsdoc
1641  * Triggered when the value of the <code>opacity</code> property changes.
1642  * @function Stats.opacityChanged
1643  * @returns {Signal}
1644  * @deprecated This signal is deprecated and will be removed.
1645  */
1646 
1647  /*@jsdoc
1648  * Triggered when the parent item changes.
1649  * @function Stats.parentChanged
1650  * @param {object} parent - Parent.
1651  * @returns {Signal}
1652  * @deprecated This signal is deprecated and will be removed.
1653  */
1654 
1655  /*@jsdoc
1656  * Triggered when the value of the <code>rotation</code> property changes.
1657  * @function Stats.rotationChanged
1658  * @returns {Signal}
1659  * @deprecated This signal is deprecated and will be removed.
1660  */
1661 
1662  /*@jsdoc
1663  * Triggered when the value of the <code>scale</code> property changes.
1664  * @function Stats.scaleChanged
1665  * @returns {Signal}
1666  * @deprecated This signal is deprecated and will be removed.
1667  */
1668 
1669  /*@jsdoc
1670  * Triggered when the value of the <code>smooth</code> property changes.
1671  * @function Stats.smoothChanged
1672  * @param {boolean} smooth - Smooth.
1673  * @returns {Signal}
1674  * @deprecated This signal is deprecated and will be removed.
1675  */
1676 
1677  /*@jsdoc
1678  * Triggered when the value of the <code>state</code> property changes.
1679  * @function Stats.stateChanged
1680  * @paramm {string} state - State.
1681  * @returns {Signal}
1682  * @deprecated This signal is deprecated and will be removed.
1683  */
1684 
1685  /*@jsdoc
1686  * Triggered when the value of the <code>transformOrigin</code> property changes.
1687  * @function Stats.transformOriginChanged
1688  * @param {number} transformOrigin - Transformm origin.
1689  * @returns {Signal}
1690  * @deprecated This signal is deprecated and will be removed.
1691  */
1692 
1693  /*@jsdoc
1694  * Triggered when the value of the <code>visibleChanged</code> property changes.
1695  * @function Stats.visibleChanged
1696  * @returns {Signal}
1697  * @deprecated This signal is deprecated and will be removed.
1698  */
1699 
1700  /*@jsdoc
1701  * Triggered when the list of visible children changes.
1702  * @function Stats.visibleChildrenChanged
1703  * @returns {Signal}
1704  * @deprecated This signal is deprecated and will be removed.
1705  */
1706 
1707  /*@jsdoc
1708  * Triggered when the value of the <code>width</code> property changes.
1709  * @function Stats.widthChanged
1710  * @returns {Signal}
1711  * @deprecated This signal is deprecated and will be removed.
1712  */
1713 
1714  /*@jsdoc
1715  * Triggered when the stats window changes.
1716  * @function Stats.windowChanged
1717  * @param {object} window - Window.
1718  * @returns {Signal}
1719  * @deprecated This signal is deprecated and will be removed.
1720  */
1721 
1722  /*@jsdoc
1723  * Triggered when the value of the <code>x</code> property changes.
1724  * @function Stats.xChanged
1725  * @returns {Signal}
1726  * @deprecated This signal is deprecated and will be removed.
1727  */
1728 
1729  /*@jsdoc
1730  * Triggered when the value of the <code>y</code> property changes.
1731  * @function Stats.yChanged
1732  * @returns {Signal}
1733  * @deprecated This signal is deprecated and will be removed.
1734  */
1735 
1736  /*@jsdoc
1737  * Triggered when the value of the <code>z</code> property changes.
1738  * @function Stats.zChanged
1739  * @returns {Signal}
1740  * @deprecated This signal is deprecated and will be removed.
1741  */
1742 
1743 
1744  // QQuickItem methods: shouldn't be in the API.
1745 
1746  /*@jsdoc
1747  * @function Stats.childAt
1748  * @param {number} x - X.
1749  * @param {number} y - Y.
1750  * @returns {object}
1751  * @deprecated This method is deprecated and will be removed.
1752  */
1753 
1754  /*@jsdoc
1755  * @function Stats.contains
1756  * @param {Vec2} point - Point
1757  * @returns {boolean}
1758  * @deprecated This method is deprecated and will be removed.
1759  */
1760 
1761  /*@jsdoc
1762  * @function Stats.forceActiveFocus
1763  * @param {number} [reason=7] - Reason
1764  * @deprecated This method is deprecated and will be removed.
1765  */
1766 
1767  /*@jsdoc
1768  * @function Stats.grabToImage
1769  * @param {object} callback - Callback.
1770  * @param {Size} [targetSize=0,0] - Target size.
1771  * @returns {boolean}
1772  * @deprecated This method is deprecated and will be removed.
1773  */
1774 
1775  /*@jsdoc
1776  * @function Stats.mapFromGlobal
1777  * @param {object} global - Global.
1778  * @deprecated This method is deprecated and will be removed.
1779  */
1780 
1781  /*@jsdoc
1782  * @function Stats.mapFromItem
1783  * @param {object} item - Item.
1784  * @deprecated This method is deprecated and will be removed.
1785  */
1786 
1787  /*@jsdoc
1788  * @function Stats.mapToGlobal
1789  * @param {object} global - Global.
1790  * @deprecated This method is deprecated and will be removed.
1791  */
1792 
1793  /*@jsdoc
1794  * @function Stats.mapToItem
1795  * @param {object} item - Item
1796  * @deprecated This method is deprecated and will be removed.
1797  */
1798 
1799  /*@jsdoc
1800  * @function Stats.nextItemInFocusChain
1801  * @param {boolean} [forward=true] - Forward.
1802  * @returns {object}
1803  * @deprecated This method is deprecated and will be removed.
1804  */
1805 
1806  /*@jsdoc
1807  * @function Stats.update
1808  * @deprecated This method is deprecated and will be removed.
1809  */
1810 
1811 private:
1812  int _recentMaxPackets{ 0 } ; // recent max incoming voxel packets to process
1813  bool _resetRecentMaxPacketsSoon{ true };
1814  bool _expanded{ false };
1815  bool _showTimingDetails{ false };
1816  bool _showGameUpdateStats{ false };
1817  QString _monospaceFont;
1818  const AudioIOStats* _audioStats;
1819  QStringList _downloadUrls = QStringList();
1820 };
1821 
1822 #endif // hifi_Stats_h