summaryrefslogtreecommitdiff
path: root/platform/default
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-04-02 14:11:37 +0200
committerKonstantin Käfer <mail@kkaefer.com>2019-05-28 16:11:05 +0200
commit7f9274035bad30980e03574c315904ab7a85fe83 (patch)
tree7b9cd0f2e2883d6da22611eaa68fae07bb7245b6 /platform/default
parent33ee7e23de24bd3c076eafef819029cf45451d23 (diff)
downloadqtlocation-mapboxgl-7f9274035bad30980e03574c315904ab7a85fe83.tar.gz
[core] refactor program object creation
Diffstat (limited to 'platform/default')
-rw-r--r--platform/default/include/mbgl/gfx/headless_backend.hpp9
-rw-r--r--platform/default/src/mbgl/gfx/headless_frontend.cpp6
-rw-r--r--platform/default/src/mbgl/gl/headless_backend.cpp12
3 files changed, 17 insertions, 10 deletions
diff --git a/platform/default/include/mbgl/gfx/headless_backend.hpp b/platform/default/include/mbgl/gfx/headless_backend.hpp
index de9283dcdf..325422323a 100644
--- a/platform/default/include/mbgl/gfx/headless_backend.hpp
+++ b/platform/default/include/mbgl/gfx/headless_backend.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <mbgl/gfx/renderable.hpp>
+#include <mbgl/gfx/backend.hpp>
#include <mbgl/gfx/renderer_backend.hpp>
#include <mbgl/util/image.hpp>
@@ -15,8 +16,12 @@ namespace gfx {
class HeadlessBackend : public gfx::Renderable {
public:
// Factory.
- static std::unique_ptr<HeadlessBackend> make(Size = { 256, 256 }, gfx::ContextMode = gfx::ContextMode::Unique);
-
+ static std::unique_ptr<HeadlessBackend>
+ Create(const Size size = { 256, 256 },
+ const gfx::ContextMode contextMode = gfx::ContextMode::Unique) {
+ return Backend::Create<HeadlessBackend, Size, gfx::ContextMode>(size, contextMode);
+ }
+
virtual PremultipliedImage readStillImage() = 0;
virtual RendererBackend* getRendererBackend() = 0;
void setSize(Size);
diff --git a/platform/default/src/mbgl/gfx/headless_frontend.cpp b/platform/default/src/mbgl/gfx/headless_frontend.cpp
index 025abdd87a..0e97c40e49 100644
--- a/platform/default/src/mbgl/gfx/headless_frontend.cpp
+++ b/platform/default/src/mbgl/gfx/headless_frontend.cpp
@@ -23,9 +23,9 @@ HeadlessFrontend::HeadlessFrontend(Size size_,
const gfx::ContextMode contextMode,
const optional<std::string> localFontFamily)
: size(size_),
- pixelRatio(pixelRatio_),
- backend(gfx::HeadlessBackend::make( { static_cast<uint32_t>(size.width * pixelRatio),
- static_cast<uint32_t>(size.height * pixelRatio) }, contextMode)),
+ pixelRatio(pixelRatio_),
+ backend(gfx::HeadlessBackend::Create({ static_cast<uint32_t>(size.width * pixelRatio),
+ static_cast<uint32_t>(size.height * pixelRatio) }, contextMode)),
asyncInvalidate([this] {
if (renderer && updateParameters) {
gfx::BackendScope guard { *getBackend() };
diff --git a/platform/default/src/mbgl/gl/headless_backend.cpp b/platform/default/src/mbgl/gl/headless_backend.cpp
index c81952fadc..732e4babae 100644
--- a/platform/default/src/mbgl/gl/headless_backend.cpp
+++ b/platform/default/src/mbgl/gl/headless_backend.cpp
@@ -79,20 +79,22 @@ void HeadlessBackend::updateAssumedState() {
PremultipliedImage HeadlessBackend::readStillImage() {
return static_cast<gl::Context&>(getContext()).readFramebuffer<PremultipliedImage>(size);
}
-
+
RendererBackend* HeadlessBackend::getRendererBackend() {
return this;
}
} // namespace gl
-#ifndef OVERRIDE_HEADLESS_BACKEND_FACTORY
-// Default factory implementation.
-std::unique_ptr<gfx::HeadlessBackend> gfx::HeadlessBackend::make(Size size, gfx::ContextMode contextMode) {
+namespace gfx {
+
+template <>
+std::unique_ptr<gfx::HeadlessBackend>
+Backend::Create<gfx::Backend::Type::OpenGL>(const Size size, const gfx::ContextMode contextMode) {
return std::make_unique<gl::HeadlessBackend>(size, contextMode);
}
-#endif
+} // namespace gfx
} // namespace mbgl