diff options
Diffstat (limited to 'src/mbgl/renderer/paint_parameters.cpp')
-rw-r--r-- | src/mbgl/renderer/paint_parameters.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mbgl/renderer/paint_parameters.cpp b/src/mbgl/renderer/paint_parameters.cpp index a7f621eb61..11ce6c379c 100644 --- a/src/mbgl/renderer/paint_parameters.cpp +++ b/src/mbgl/renderer/paint_parameters.cpp @@ -2,12 +2,14 @@ #include <mbgl/renderer/update_parameters.hpp> #include <mbgl/renderer/render_static_data.hpp> #include <mbgl/map/transform_state.hpp> +#include <mbgl/util/chrono.hpp> namespace mbgl { PaintParameters::PaintParameters(gl::Context& context_, float pixelRatio_, GLContextMode contextMode_, + const size_t frameID_, RendererBackend& backend_, const UpdateParameters& updateParameters, const EvaluatedLight& evaluatedLight_, @@ -24,6 +26,7 @@ PaintParameters::PaintParameters(gl::Context& context_, mapMode(updateParameters.mode), debugOptions(updateParameters.debugOptions), contextMode(contextMode_), + frameID(frameID_), timePoint(updateParameters.timePoint), pixelRatio(pixelRatio_), #ifndef NDEBUG @@ -51,6 +54,13 @@ PaintParameters::PaintParameters(gl::Context& context_, } } +PaintParameters::~PaintParameters() { + const size_t retention = mapMode == MapMode::Continuous ? 100 : 20; + if (frameID >= retention) { + programs.evictNotUsedSince(frameID - retention); + } +} + mat4 PaintParameters::matrixForTile(const UnwrappedTileID& tileID, bool aligned) const { mat4 matrix; state.matrixFor(matrix, tileID); |