diff --git a/scwx-qt/source/scwx/qt/map/color_table_layer.cpp b/scwx-qt/source/scwx/qt/map/color_table_layer.cpp index c56c32e9..3c67b5b4 100644 --- a/scwx-qt/source/scwx/qt/map/color_table_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/color_table_layer.cpp @@ -106,6 +106,12 @@ void ColorTableLayer::Render(const QMapbox::CustomLayerRenderParameters& params) { gl::OpenGLFunctions& gl = context()->gl_; + if (!context()->radarProductView_->IsInitialized()) + { + // Defer rendering until view is initialized + return; + } + glm::mat4 projection = glm::ortho(0.0f, static_cast(params.width), 0.0f, diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 675b7d54..ea74998b 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -274,8 +274,6 @@ void MapWidget::SelectRadarProduct(common::Level2Product product) util::async( [=]() { - radarProductView->Initialize(); - std::string colorTableFile = manager::SettingsManager::palette_settings()->palette( common::GetLevel2Palette(product)); @@ -285,6 +283,8 @@ void MapWidget::SelectRadarProduct(common::Level2Product product) common::ColorTable::Load(colorTableFile); radarProductView->LoadColorTable(colorTable); } + + radarProductView->Initialize(); }); if (p->map_ != nullptr) diff --git a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp index e5f4f949..289eb316 100644 --- a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp @@ -630,9 +630,9 @@ void Level2ProductView::ComputeSweep() BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Vertices calculated in " << timer.format(6, "%ws"); - emit SweepComputed(); - UpdateColorTable(); + + emit SweepComputed(); } std::shared_ptr Level2ProductView::Create( diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp index cc96917a..73ce6789 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp @@ -24,9 +24,10 @@ static const uint16_t DEFAULT_COLOR_TABLE_MAX = 255u; class RadarProductViewImpl { public: - explicit RadarProductViewImpl() : sweepMutex_ {} {} + explicit RadarProductViewImpl() : initialized_ {false}, sweepMutex_ {} {} ~RadarProductViewImpl() = default; + bool initialized_; std::mutex sweepMutex_; }; @@ -73,10 +74,17 @@ std::mutex& RadarProductView::sweep_mutex() void RadarProductView::Initialize() { ComputeSweep(); + + p->initialized_ = true; } void RadarProductView::SelectElevation(float elevation) {} +bool RadarProductView::IsInitialized() const +{ + return p->initialized_; +} + std::vector RadarProductView::GetElevationCuts() const { return {}; diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp index a21fc460..b54a49cd 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp @@ -45,6 +45,8 @@ public: virtual void SelectTime(std::chrono::system_clock::time_point time) = 0; virtual void Update() = 0; + bool IsInitialized() const; + virtual common::RadarProductGroup GetRadarProductGroup() const = 0; virtual std::string GetRadarProductName() const = 0; virtual std::vector GetElevationCuts() const;