diff --git a/selfdrive/navd/main.cc b/selfdrive/navd/main.cc index 45c502d116..8cef07edcf 100644 --- a/selfdrive/navd/main.cc +++ b/selfdrive/navd/main.cc @@ -14,6 +14,8 @@ int main(int argc, char *argv[]) { std::signal(SIGINT, sigTermHandler); std::signal(SIGTERM, sigTermHandler); - MapRenderer m(get_mapbox_settings()); + MapRenderer * m = new MapRenderer(get_mapbox_settings()); + assert(m); + return app.exec(); } diff --git a/selfdrive/navd/map_renderer.cc b/selfdrive/navd/map_renderer.cc index a4597b242d..539783fff4 100644 --- a/selfdrive/navd/map_renderer.cc +++ b/selfdrive/navd/map_renderer.cc @@ -53,7 +53,8 @@ MapRenderer::MapRenderer(const QMapboxGLSettings &settings, bool online) : m_set ctx->makeCurrent(surface.get()); assert(QOpenGLContext::currentContext() == ctx.get()); - ctx->functions()->initializeOpenGLFunctions(); + gl_functions.reset(ctx->functions()); + gl_functions->initializeOpenGLFunctions(); QOpenGLFramebufferObjectFormat fbo_format; fbo.reset(new QOpenGLFramebufferObject(WIDTH, HEIGHT, fbo_format)); @@ -66,7 +67,7 @@ MapRenderer::MapRenderer(const QMapboxGLSettings &settings, bool online) : m_set m_map->resize(fbo->size()); m_map->setFramebufferObject(fbo->handle(), fbo->size()); - ctx->functions()->glViewport(0, 0, WIDTH, HEIGHT); + gl_functions->glViewport(0, 0, WIDTH, HEIGHT); QObject::connect(m_map.data(), &QMapboxGL::mapChanged, [=](QMapboxGL::MapChange change) { // https://github.com/mapbox/mapbox-gl-native/blob/cf734a2fec960025350d8de0d01ad38aeae155a0/platform/qt/include/qmapboxgl.hpp#L116 @@ -156,9 +157,9 @@ bool MapRenderer::loaded() { void MapRenderer::update() { double start_t = millis_since_boot(); - ctx->functions()->glClear(GL_COLOR_BUFFER_BIT); + gl_functions->glClear(GL_COLOR_BUFFER_BIT); m_map->render(); - ctx->functions()->glFlush(); + gl_functions->glFlush(); double end_t = millis_since_boot(); if ((vipc_server != nullptr) && loaded()) { diff --git a/selfdrive/navd/map_renderer.h b/selfdrive/navd/map_renderer.h index 2f9e0a215e..5739ba88f2 100644 --- a/selfdrive/navd/map_renderer.h +++ b/selfdrive/navd/map_renderer.h @@ -28,6 +28,7 @@ public: private: std::unique_ptr ctx; std::unique_ptr surface; + std::unique_ptr gl_functions; std::unique_ptr fbo; std::unique_ptr vipc_server;