diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 30e3b699..a209de28 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -1,6 +1,7 @@ #include "main_window.hpp" #include "./ui_main_window.h" +#include #include #include #include @@ -776,6 +777,8 @@ void MainWindowImpl::ConfigureMapLayout() } }; + auto glContext = std::make_shared(); + for (int64_t y = 0; y < gridHeight; y++) { QSplitter* hs = new QSplitter(vs); @@ -785,7 +788,8 @@ void MainWindowImpl::ConfigureMapLayout() { if (maps_.at(mapIndex) == nullptr) { - maps_[mapIndex] = new map::MapWidget(mapIndex, settings_); + maps_[mapIndex] = + new map::MapWidget(mapIndex, settings_, glContext); } hs->addWidget(maps_[mapIndex]); @@ -818,9 +822,9 @@ void MainWindowImpl::ConfigureMapStyles() if ((customStyleAvailable_ && styleName == "Custom") || std::find_if(mapProviderInfo.mapStyles_.cbegin(), mapProviderInfo.mapStyles_.cend(), - [&](const auto& mapStyle) { - return mapStyle.name_ == styleName; - }) != mapProviderInfo.mapStyles_.cend()) + [&](const auto& mapStyle) + { return mapStyle.name_ == styleName; }) != + mapProviderInfo.mapStyles_.cend()) { // Initialize map style from settings maps_.at(i)->SetInitialMapStyle(styleName); @@ -1154,22 +1158,22 @@ void MainWindowImpl::ConnectOtherSignals() mapSettings.radar_product(i).StageValue(map->GetRadarProductName()); } }); - connect(level2ProductsWidget_, - &ui::Level2ProductsWidget::RadarProductSelected, - mainWindow_, - [&](common::RadarProductGroup group, - const std::string& productName, - int16_t productCode) { - SelectRadarProduct(activeMap_, group, productName, productCode); - }); - connect(level3ProductsWidget_, - &ui::Level3ProductsWidget::RadarProductSelected, - mainWindow_, - [&](common::RadarProductGroup group, - const std::string& productName, - int16_t productCode) { - SelectRadarProduct(activeMap_, group, productName, productCode); - }); + connect( + level2ProductsWidget_, + &ui::Level2ProductsWidget::RadarProductSelected, + mainWindow_, + [&](common::RadarProductGroup group, + const std::string& productName, + int16_t productCode) + { SelectRadarProduct(activeMap_, group, productName, productCode); }); + connect( + level3ProductsWidget_, + &ui::Level3ProductsWidget::RadarProductSelected, + mainWindow_, + [&](common::RadarProductGroup group, + const std::string& productName, + int16_t productCode) + { SelectRadarProduct(activeMap_, group, productName, productCode); }); connect(level2SettingsWidget_, &ui::Level2SettingsWidget::ElevationSelected, mainWindow_, diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 2d408627..cfeba407 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -68,11 +68,13 @@ class MapWidgetImpl : public QObject Q_OBJECT public: - explicit MapWidgetImpl(MapWidget* widget, - std::size_t id, - const QMapLibre::Settings& settings) : + explicit MapWidgetImpl(MapWidget* widget, + std::size_t id, + const QMapLibre::Settings& settings, + std::shared_ptr glContext) : id_ {id}, uuid_ {boost::uuids::random_generator()()}, + glContext_ {std::move(glContext)}, widget_ {widget}, settings_(settings), map_(), @@ -194,8 +196,7 @@ public: boost::uuids::uuid uuid_; std::shared_ptr context_ {std::make_shared()}; - std::shared_ptr glContext_ { - std::make_shared()}; + std::shared_ptr glContext_; MapWidget* widget_; QMapLibre::Settings settings_; @@ -280,8 +281,10 @@ public slots: void Update(); }; -MapWidget::MapWidget(std::size_t id, const QMapLibre::Settings& settings) : - p(std::make_unique(this, id, settings)) +MapWidget::MapWidget(std::size_t id, + const QMapLibre::Settings& settings, + std::shared_ptr glContext) : + p(std::make_unique(this, id, settings, std::move(glContext))) { if (settings::GeneralSettings::Instance().anti_aliasing_enabled().GetValue()) { diff --git a/scwx-qt/source/scwx/qt/map/map_widget.hpp b/scwx-qt/source/scwx/qt/map/map_widget.hpp index 2035b517..348e9113 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.hpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.hpp @@ -22,6 +22,11 @@ class QKeyEvent; class QMouseEvent; class QWheelEvent; +namespace scwx::qt::gl +{ +class GlContext; +} + namespace scwx::qt::map { @@ -32,7 +37,9 @@ class MapWidget : public QOpenGLWidget Q_OBJECT public: - explicit MapWidget(std::size_t id, const QMapLibre::Settings&); + explicit MapWidget(std::size_t id, + const QMapLibre::Settings&, + std::shared_ptr glContext); ~MapWidget(); void DumpLayerList() const;