summaryrefslogtreecommitdiff
path: root/platform/glfw/glfw_gl_backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/glfw/glfw_gl_backend.cpp')
-rw-r--r--platform/glfw/glfw_gl_backend.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/platform/glfw/glfw_gl_backend.cpp b/platform/glfw/glfw_gl_backend.cpp
index 2d622fc193..4d9d87dd72 100644
--- a/platform/glfw/glfw_gl_backend.cpp
+++ b/platform/glfw/glfw_gl_backend.cpp
@@ -15,11 +15,15 @@ public:
backend.setViewport(0, 0, backend.getSize());
}
+ void swap() override {
+ backend.swap();
+ }
+
private:
GLFWGLBackend& backend;
};
-GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_)
+GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_, const bool capFrameRate)
: mbgl::gl::RendererBackend(mbgl::gfx::ContextMode::Unique),
mbgl::gfx::Renderable(
[window_] {
@@ -29,6 +33,13 @@ GLFWGLBackend::GLFWGLBackend(GLFWwindow* window_)
}(),
std::make_unique<GLFWGLRenderableResource>(*this)),
window(window_) {
+ glfwMakeContextCurrent(window);
+ if (!capFrameRate) {
+ // Disables vsync on platforms that support it.
+ glfwSwapInterval(0);
+ } else {
+ glfwSwapInterval(1);
+ }
}
GLFWGLBackend::~GLFWGLBackend() = default;
@@ -57,3 +68,7 @@ mbgl::Size GLFWGLBackend::getSize() const {
void GLFWGLBackend::setSize(const mbgl::Size newSize) {
size = newSize;
}
+
+void GLFWGLBackend::swap() {
+ glfwSwapBuffers(window);
+}