From 56dd90db4098bcba64eba8c1cf6aec84a8f3e152 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Sat, 15 Nov 2014 20:24:00 -0800 Subject: [PATCH 1/3] fix warnings in overlays --- interface/src/ui/overlays/BillboardOverlay.cpp | 12 +++++++----- interface/src/ui/overlays/ImageOverlay.cpp | 11 ++++++----- interface/src/ui/overlays/ModelOverlay.cpp | 6 +++--- interface/src/ui/overlays/Overlay.cpp | 18 ++++++++++-------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index dee5eceab7..5fbad7839a 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -26,12 +26,14 @@ BillboardOverlay::BillboardOverlay() : BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) : Base3DOverlay(billboardOverlay), - _newTextureNeeded(true), - _scale(billboardOverlay->_scale), - _isFacingAvatar(billboardOverlay->_isFacingAvatar), - _fromImage(billboardOverlay->_fromImage), _url(billboardOverlay->_url), - _billboard(billboardOverlay->_billboard) + _billboard(billboardOverlay->_billboard), + _size(), + _billboardTexture(), + _newTextureNeeded(true), + _fromImage(billboardOverlay->_fromImage), + _scale(billboardOverlay->_scale), + _isFacingAvatar(billboardOverlay->_isFacingAvatar) { } diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index fad19be292..f903dfe19c 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -29,12 +29,13 @@ ImageOverlay::ImageOverlay() : ImageOverlay::ImageOverlay(const ImageOverlay* imageOverlay) : Overlay2D(imageOverlay), - _textureID(0), - _textureBound(false), - _wantClipFromImage(false), - _renderImage(imageOverlay->_renderImage), _imageURL(imageOverlay->_imageURL), - _textureImage(imageOverlay->_textureImage) + _textureImage(imageOverlay->_textureImage), + _textureID(0), + _fromImage(), + _renderImage(imageOverlay->_renderImage), + _textureBound(false), + _wantClipFromImage(false) { } diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 3594d7e828..60049e0b3b 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -26,10 +26,10 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : Base3DOverlay(modelOverlay), _model(), _modelTextures(QVariantMap()), - _scale(modelOverlay->_scale), - _updateModel(false), _url(modelOverlay->_url), - _rotation(modelOverlay->_rotation) + _rotation(modelOverlay->_rotation), + _scale(modelOverlay->_scale), + _updateModel(false) { _model.init(); if (_url.isValid()) { diff --git a/interface/src/ui/overlays/Overlay.cpp b/interface/src/ui/overlays/Overlay.cpp index 549152ded0..fd7aaca717 100644 --- a/interface/src/ui/overlays/Overlay.cpp +++ b/interface/src/ui/overlays/Overlay.cpp @@ -41,20 +41,22 @@ Overlay::Overlay() : Overlay::Overlay(const Overlay* overlay) : _parent(NULL), + _isLoaded(overlay->_isLoaded), _alpha(overlay->_alpha), - _lastPulseUpdate(usecTimestampNow()), - _alphaPulse(overlay->_alphaPulse), - _anchor(overlay->_anchor), - _color(overlay->_color), - _colorPulse(overlay->_colorPulse), _glowLevel(overlay->_glowLevel), - _glowLevelPulse(overlay->_glowLevelPulse), - _pulseDirection(overlay->_pulseDirection), + _pulse(overlay->_pulse), _pulseMax(overlay->_pulseMax), _pulseMin(overlay->_pulseMin), _pulsePeriod(overlay->_pulsePeriod), + _pulseDirection(overlay->_pulseDirection), + _lastPulseUpdate(usecTimestampNow()), + _glowLevelPulse(overlay->_glowLevelPulse), + _alphaPulse(overlay->_alphaPulse), + _colorPulse(overlay->_colorPulse), + _color(overlay->_color), _visible(overlay->_visible), - _isLoaded(overlay->_isLoaded) + _anchor(overlay->_anchor), + _scriptEngine(NULL) { } From c70a7e055348ded84b4100ddfb51601477958263 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 14 Nov 2014 16:03:43 -0800 Subject: [PATCH 2/3] coding standard cleanup, fix warning --- interface/src/ui/overlays/Overlays.h | 3 ++- libraries/octree/src/OctreeHeadlessViewer.h | 3 ++- libraries/octree/src/OctreeRenderer.h | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 295412cdbd..2cd80041cd 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -51,7 +51,8 @@ public: ~Overlays(); void init(QGLWidget* parent); void update(float deltatime); - void render3D(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE, RenderArgs::RenderSide renderSide = RenderArgs::MONO); + void render3D(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE, + RenderArgs::RenderSide renderSide = RenderArgs::MONO); void render2D(); public slots: diff --git a/libraries/octree/src/OctreeHeadlessViewer.h b/libraries/octree/src/OctreeHeadlessViewer.h index 03b8a204e0..9a6a5c7102 100644 --- a/libraries/octree/src/OctreeHeadlessViewer.h +++ b/libraries/octree/src/OctreeHeadlessViewer.h @@ -33,7 +33,8 @@ public: virtual void renderElement(OctreeElement* element, RenderArgs* args) { /* swallow these */ } virtual void init(); - virtual void render(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE) { /* swallow these */ } + virtual void render(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE, + RenderArgs::RenderSide renderSide = RenderArgs::MONO) { /* swallow these */ } void setJurisdictionListener(JurisdictionListener* jurisdictionListener) { _jurisdictionListener = jurisdictionListener; } diff --git a/libraries/octree/src/OctreeRenderer.h b/libraries/octree/src/OctreeRenderer.h index e8612b4cb6..2999f34fb6 100644 --- a/libraries/octree/src/OctreeRenderer.h +++ b/libraries/octree/src/OctreeRenderer.h @@ -52,7 +52,8 @@ public: virtual void init(); /// render the content of the octree - virtual void render(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE, RenderArgs::RenderSide renderSide = RenderArgs::MONO); + virtual void render(RenderArgs::RenderMode renderMode = RenderArgs::DEFAULT_RENDER_MODE, + RenderArgs::RenderSide renderSide = RenderArgs::MONO); ViewFrustum* getViewFrustum() const { return _viewFrustum; } void setViewFrustum(ViewFrustum* viewFrustum) { _viewFrustum = viewFrustum; } From 4adb4787cd18222b907a8828512a5b3a58633e06 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Sat, 15 Nov 2014 21:50:42 -0800 Subject: [PATCH 3/3] added debugging of usecTimestampNow() in octree server to better understand flight times --- assignment-client/src/octree/OctreeServer.cpp | 5 ++- assignment-client/src/octree/OctreeServer.h | 1 + .../resources/describe-settings.json | 7 ++++ libraries/octree/src/OctreePersistThread.cpp | 20 +++++++++-- libraries/octree/src/OctreePersistThread.h | 6 +++- libraries/shared/src/SharedUtil.cpp | 33 ++++++++++++++++--- libraries/shared/src/SharedUtil.h | 2 +- 7 files changed, 64 insertions(+), 10 deletions(-) diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index f78a9a2b30..da37e66aaa 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -1017,6 +1017,9 @@ void OctreeServer::readConfiguration() { readOptionBool(QString("debugReceiving"), settingsSectionObject, _debugReceiving); qDebug("debugReceiving=%s", debug::valueOf(_debugReceiving)); + readOptionBool(QString("debugTimestampNow"), settingsSectionObject, _debugTimestampNow); + qDebug() << "debugTimestampNow=" << _debugTimestampNow; + bool noPersist; readOptionBool(QString("NoPersist"), settingsSectionObject, noPersist); _wantPersist = !noPersist; @@ -1133,7 +1136,7 @@ void OctreeServer::run() { // now set up PersistThread _persistThread = new OctreePersistThread(_tree, _persistFilename, _persistInterval, - _wantBackup, _backupInterval, _backupExtensionFormat); + _wantBackup, _backupInterval, _backupExtensionFormat, _debugTimestampNow); if (_persistThread) { _persistThread->initialize(true); } diff --git a/assignment-client/src/octree/OctreeServer.h b/assignment-client/src/octree/OctreeServer.h index 8a91b94da0..69fc3b0852 100644 --- a/assignment-client/src/octree/OctreeServer.h +++ b/assignment-client/src/octree/OctreeServer.h @@ -162,6 +162,7 @@ protected: bool _wantPersist; bool _debugSending; bool _debugReceiving; + bool _debugTimestampNow; bool _verboseDebug; JurisdictionMap* _jurisdiction; JurisdictionSender* _jurisdictionSender; diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 04c48e460e..ccd12a30ed 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -359,6 +359,13 @@ "default": false, "advanced": true }, + { + "name": "debugTimestampNow", + "type": "checkbox", + "help": "extra debugging for usecTimestampNow() function", + "default": false, + "advanced": true + }, { "name": "clockSkew", "label": "Clock Skew", diff --git a/libraries/octree/src/OctreePersistThread.cpp b/libraries/octree/src/OctreePersistThread.cpp index f74ddfa5f0..c7e769c20b 100644 --- a/libraries/octree/src/OctreePersistThread.cpp +++ b/libraries/octree/src/OctreePersistThread.cpp @@ -22,8 +22,8 @@ const int OctreePersistThread::DEFAULT_BACKUP_INTERVAL = 1000 * 60 * 30; // ever const QString OctreePersistThread::DEFAULT_BACKUP_EXTENSION_FORMAT(".backup.%Y-%m-%d.%H:%M:%S.%z"); -OctreePersistThread::OctreePersistThread(Octree* tree, const QString& filename, int persistInterval, - bool wantBackup, int backupInterval, const QString& backupExtensionFormat) : +OctreePersistThread::OctreePersistThread(Octree* tree, const QString& filename, int persistInterval, bool wantBackup, + int backupInterval, const QString& backupExtensionFormat, bool debugTimestampNow) : _tree(tree), _filename(filename), _backupExtensionFormat(backupExtensionFormat), @@ -33,7 +33,9 @@ OctreePersistThread::OctreePersistThread(Octree* tree, const QString& filename, _loadTimeUSecs(0), _lastCheck(0), _lastBackup(0), - _wantBackup(wantBackup) + _wantBackup(wantBackup), + _debugTimestampNow(debugTimestampNow), + _lastTimeDebug(0) { } @@ -101,6 +103,18 @@ bool OctreePersistThread::process() { persist(); } } + + // if we were asked to debugTimestampNow do that now... + if (_debugTimestampNow) { + quint64 now = usecTimestampNow(); + quint64 sinceLastDebug = now - _lastTimeDebug; + quint64 DEBUG_TIMESTAMP_INTERVAL = 600000000; // every 10 minutes + + if (sinceLastDebug > DEBUG_TIMESTAMP_INTERVAL) { + _lastTimeDebug = usecTimestampNow(true); // ask for debug output + } + + } return isStillRunning(); // keep running till they terminate us } diff --git a/libraries/octree/src/OctreePersistThread.h b/libraries/octree/src/OctreePersistThread.h index 06b97b2dcb..13597268c8 100644 --- a/libraries/octree/src/OctreePersistThread.h +++ b/libraries/octree/src/OctreePersistThread.h @@ -28,7 +28,8 @@ public: OctreePersistThread(Octree* tree, const QString& filename, int persistInterval = DEFAULT_PERSIST_INTERVAL, bool wantBackup = false, int backupInterval = DEFAULT_BACKUP_INTERVAL, - const QString& backupExtensionFormat = DEFAULT_BACKUP_EXTENSION_FORMAT); + const QString& backupExtensionFormat = DEFAULT_BACKUP_EXTENSION_FORMAT, + bool debugTimestampNow = false); bool isInitialLoadComplete() const { return _initialLoadComplete; } quint64 getLoadElapsedTime() const { return _loadTimeUSecs; } @@ -57,6 +58,9 @@ private: quint64 _lastBackup; bool _wantBackup; time_t _lastPersistTime; + + bool _debugTimestampNow; + quint64 _lastTimeDebug; }; #endif // hifi_OctreePersistThread_h diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 05d208c2f8..595d7078f8 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -37,7 +37,7 @@ void usecTimestampNowForceClockSkew(int clockSkew) { ::usecTimestampNowAdjust = clockSkew; } -quint64 usecTimestampNow() { +quint64 usecTimestampNow(bool wantDebug) { static bool usecTimestampNowIsInitialized = false; static qint64 TIME_REFERENCE = 0; // in usec static QElapsedTimer timestampTimer; @@ -57,7 +57,6 @@ quint64 usecTimestampNow() { quint64 msecsElapsed = timestampTimer.restart(); quint64 usecsElapsed = nsecsElapsed / 1000; // nsec to usec TIME_REFERENCE += usecsElapsed; - const bool wantDebug = false; if (wantDebug) { qDebug() << "usecTimestampNow() - resetting QElapsedTimer. "; qDebug() << " RESET_AFTER_ELAPSED_NSECS:" << RESET_AFTER_ELAPSED_NSECS; @@ -68,8 +67,34 @@ quint64 usecTimestampNow() { } } - // usec nsec to usec usec - return TIME_REFERENCE + timestampTimer.nsecsElapsed() / 1000 + ::usecTimestampNowAdjust; + quint64 nsecsElapsed = timestampTimer.nsecsElapsed(); + quint64 usecsElapsed = nsecsElapsed / 1000; // nsec to usec + quint64 now = TIME_REFERENCE + usecsElapsed + ::usecTimestampNowAdjust; + + if (wantDebug) { + QDateTime currentLocalTime = QDateTime::currentDateTime(); + + quint64 msecsNow = now / 1000; // usecs to msecs + QDateTime nowAsString; + nowAsString.setMSecsSinceEpoch(msecsNow); + + quint64 msecsTimeReference = TIME_REFERENCE / 1000; // usecs to msecs + QDateTime timeReferenceAsString; + timeReferenceAsString.setMSecsSinceEpoch(msecsTimeReference); + + qDebug() << "usecTimestampNow() - details... "; + qDebug() << " TIME_REFERENCE:" << TIME_REFERENCE; + qDebug() << " timeReferenceAsString:" << timeReferenceAsString.toString("yyyy-MM-dd hh:mm:ss.zzz"); + qDebug() << " usecTimestampNowAdjust:" << usecTimestampNowAdjust; + qDebug() << " nsecsElapsed:" << nsecsElapsed; + qDebug() << " usecsElapsed:" << usecsElapsed; + qDebug() << " now:" << now; + qDebug() << " msecsNow:" << msecsNow; + qDebug() << " nowAsString:" << nowAsString.toString("yyyy-MM-dd hh:mm:ss.zzz"); + qDebug() << " currentLocalTime:" << currentLocalTime.toString("yyyy-MM-dd hh:mm:ss.zzz"); + } + + return now; } float randFloat() { diff --git a/libraries/shared/src/SharedUtil.h b/libraries/shared/src/SharedUtil.h index 69dfb4db35..3fe3c3d1ec 100644 --- a/libraries/shared/src/SharedUtil.h +++ b/libraries/shared/src/SharedUtil.h @@ -67,7 +67,7 @@ static const quint64 USECS_PER_SECOND = USECS_PER_MSEC * MSECS_PER_SECOND; const int BITS_IN_BYTE = 8; -quint64 usecTimestampNow(); +quint64 usecTimestampNow(bool wantDebug = false); void usecTimestampNowForceClockSkew(int clockSkew); float randFloat();