[qt] manage backendscope in renderer frontend
This commit is contained in:
committed by
Ivo van Dongen
parent
9893b3d071
commit
4dee3a0d8d
@@ -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<QMapboxGLRendererFrontend>(
|
||||
std::make_unique<mbgl::Renderer>(*this, pixelRatio, *fileSourceObj, *threadPool,
|
||||
static_cast<mbgl::GLContextMode>(settings.contextMode())),
|
||||
*this,
|
||||
*this);
|
||||
connect(frontend.get(), SIGNAL(updated()), this, SLOT(invalidate()));
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
#include <mbgl/renderer/backend_scope.hpp>
|
||||
#include <mbgl/renderer/renderer.hpp>
|
||||
|
||||
QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, mbgl::View& view_)
|
||||
QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer> 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<mbgl::UpdateParameters> 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);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/renderer/renderer_backend.hpp>
|
||||
#include <mbgl/renderer/renderer_frontend.hpp>
|
||||
|
||||
#include <QObject>
|
||||
@@ -14,7 +15,7 @@ class QMapboxGLRendererFrontend : public QObject, public mbgl::RendererFrontend
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer>, mbgl::View&);
|
||||
explicit QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer>, mbgl::RendererBackend&, mbgl::View&);
|
||||
~QMapboxGLRendererFrontend() override;
|
||||
|
||||
void reset() override;
|
||||
@@ -30,6 +31,7 @@ signals:
|
||||
|
||||
private:
|
||||
std::unique_ptr<mbgl::Renderer> renderer;
|
||||
mbgl::RendererBackend& backend;
|
||||
mbgl::View& view;
|
||||
std::shared_ptr<mbgl::UpdateParameters> updateParameters;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user