Use a shared GlContext for all MapWidgets

This commit is contained in:
Dan Paulat 2025-05-08 23:27:02 -05:00
parent 44a864f50f
commit 21e5697073
3 changed files with 42 additions and 28 deletions

View file

@ -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<gl::GlContext> 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<MapContext> context_ {std::make_shared<MapContext>()};
std::shared_ptr<gl::GlContext> glContext_ {
std::make_shared<gl::GlContext>()};
std::shared_ptr<gl::GlContext> 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<MapWidgetImpl>(this, id, settings))
MapWidget::MapWidget(std::size_t id,
const QMapLibre::Settings& settings,
std::shared_ptr<gl::GlContext> glContext) :
p(std::make_unique<MapWidgetImpl>(this, id, settings, std::move(glContext)))
{
if (settings::GeneralSettings::Instance().anti_aliasing_enabled().GetValue())
{

View file

@ -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<gl::GlContext> glContext);
~MapWidget();
void DumpLayerList() const;