From 4dee3a0d8d527bd48d09cfb52c7b9c50cb50b602 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Tue, 25 Jul 2017 11:16:39 +0300 Subject: [qt] manage backendscope in renderer frontend --- platform/qt/src/qmapboxgl.cpp | 4 +--- platform/qt/src/qmapboxgl_p.hpp | 3 --- platform/qt/src/qmapboxgl_renderer_frontend_p.cpp | 8 +++++++- platform/qt/src/qmapboxgl_renderer_frontend_p.hpp | 4 +++- 4 files changed, 11 insertions(+), 8 deletions(-) (limited to 'platform') diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index b79630b3df..6faffb5ffb 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -1446,9 +1446,6 @@ void QMapboxGL::render() } #endif - // The OpenGL implementation automatically enables the OpenGL context for us. - mbgl::BackendScope scope { *d_ptr, mbgl::BackendScope::ScopeType::Implicit }; - d_ptr->dirty = false; d_ptr->render(); } @@ -1505,6 +1502,7 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin frontend = std::make_unique( std::make_unique(*this, pixelRatio, *fileSourceObj, *threadPool, static_cast(settings.contextMode())), + *this, *this); connect(frontend.get(), SIGNAL(updated()), this, SLOT(invalidate())); diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index e7eb1c2c2b..0fa9f6e8e4 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -31,9 +31,6 @@ public: void updateAssumedState() final; void activate() final {} void deactivate() final {} - mbgl::BackendScope::ScopeType getScopeType() const final { - return mbgl::BackendScope::ScopeType::Implicit; - } // mbgl::MapObserver implementation. void onCameraWillChange(mbgl::MapObserver::CameraChangeMode) final; diff --git a/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp b/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp index fd57168df6..d7d9e9c7b7 100644 --- a/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp +++ b/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp @@ -3,8 +3,9 @@ #include #include -QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr renderer_, mbgl::View& view_) +QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr renderer_, mbgl::RendererBackend& backend_, mbgl::View& view_) : renderer(std::move(renderer_)) + , backend(backend_) , view(view_) { } @@ -23,10 +24,15 @@ void QMapboxGLRendererFrontend::update(std::shared_ptr u void QMapboxGLRendererFrontend::setObserver(mbgl::RendererObserver& observer_) { if (!renderer) return; + renderer->setObserver(&observer_); } void QMapboxGLRendererFrontend::render() { if (!renderer || !updateParameters) return; + + // The OpenGL implementation automatically enables the OpenGL context for us. + mbgl::BackendScope scope { backend, mbgl::BackendScope::ScopeType::Implicit }; + renderer->render(view, *updateParameters); } diff --git a/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp b/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp index 0a0546042a..d7e414e5f9 100644 --- a/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp +++ b/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -14,7 +15,7 @@ class QMapboxGLRendererFrontend : public QObject, public mbgl::RendererFrontend Q_OBJECT public: - explicit QMapboxGLRendererFrontend(std::unique_ptr, mbgl::View&); + explicit QMapboxGLRendererFrontend(std::unique_ptr, mbgl::RendererBackend&, mbgl::View&); ~QMapboxGLRendererFrontend() override; void reset() override; @@ -30,6 +31,7 @@ signals: private: std::unique_ptr renderer; + mbgl::RendererBackend& backend; mbgl::View& view; std::shared_ptr updateParameters; }; -- cgit v1.2.1