From 4a8e4a35bc32c967b3d61231e80d27cac10c4253 Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Wed, 12 Oct 2022 11:08:24 -0400 Subject: [PATCH] Create timer that allows the browser to reload before changing the border radius --- modules/skybrowser/include/screenspaceskybrowser.h | 2 ++ modules/skybrowser/src/screenspaceskybrowser.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/skybrowser/include/screenspaceskybrowser.h b/modules/skybrowser/include/screenspaceskybrowser.h index e5abaa69c0..90eb3c2073 100644 --- a/modules/skybrowser/include/screenspaceskybrowser.h +++ b/modules/skybrowser/include/screenspaceskybrowser.h @@ -37,6 +37,7 @@ namespace openspace { class ScreenSpaceSkyBrowser : public ScreenSpaceRenderable, public WwtCommunicator { public: + static constexpr int RadiusTimeOut = 25; explicit ScreenSpaceSkyBrowser(const ghoul::Dictionary& dictionary); ~ScreenSpaceSkyBrowser() override; @@ -80,6 +81,7 @@ private: bool _ratioIsDirty = false; bool _radiusIsDirty = false; bool _isInitialized = false; + int _borderRadiusTimer = -1; float _ratio = 1.f; }; diff --git a/modules/skybrowser/src/screenspaceskybrowser.cpp b/modules/skybrowser/src/screenspaceskybrowser.cpp index 6936337919..1724dccd8b 100644 --- a/modules/skybrowser/src/screenspaceskybrowser.cpp +++ b/modules/skybrowser/src/screenspaceskybrowser.cpp @@ -129,6 +129,7 @@ ScreenSpaceSkyBrowser::ScreenSpaceSkyBrowser(const ghoul::Dictionary& dictionary _scale.onChange([this]() { updateTextureResolution(); + _borderRadiusTimer = 0; }); _useRadiusAzimuthElevation.onChange( @@ -325,11 +326,15 @@ void ScreenSpaceSkyBrowser::update() { if (_shouldReload) { _isInitialized = false; } - - if (_radiusIsDirty && _isInitialized) { + // After the texture has been updated, wait a little bit before updating the border + // radius so the browser has time to update its size + if (_radiusIsDirty && _isInitialized && _borderRadiusTimer == RadiusTimeOut) { setBorderRadius(_borderRadius); _radiusIsDirty = false; + _borderRadiusTimer = -1; } + _borderRadiusTimer++; + ScreenSpaceRenderable::update(); WwtCommunicator::update();