summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-10-29 17:27:16 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-10-31 16:53:07 +0200
commita70bfd89108cf1aef75181819ae43e550a69255e (patch)
tree158af7ab005cb4edcb788b4d87c9396e7add4c4d
parentf03afdee218680d95eb5b9b0ab04083bc7cea512 (diff)
downloadqtlocation-mapboxgl-a70bfd89108cf1aef75181819ae43e550a69255e.tar.gz
[core] Don't use GL_LINEAR if panning w/o rotation nor pitch
-rw-r--r--src/mbgl/map/map.cpp1
-rw-r--r--src/mbgl/map/transform_state.cpp4
-rw-r--r--src/mbgl/map/transform_state.hpp1
-rw-r--r--src/mbgl/renderer/painter_symbol.cpp2
-rw-r--r--test/api/annotations.test.cpp16
5 files changed, 17 insertions, 7 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 75f7788931..c7a47abebd 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -408,7 +408,6 @@ void Map::cancelTransitions() {
void Map::setGestureInProgress(bool inProgress) {
impl->transform.setGestureInProgress(inProgress);
- impl->onUpdate(Update::Repaint);
}
bool Map::isGestureInProgress() const {
diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp
index 5dc7feffc0..188b3aa79a 100644
--- a/src/mbgl/map/transform_state.cpp
+++ b/src/mbgl/map/transform_state.cpp
@@ -175,10 +175,6 @@ float TransformState::getPitch() const {
#pragma mark - State
-bool TransformState::isChanging() const {
- return rotating || scaling || panning || gestureInProgress;
-}
-
bool TransformState::isRotating() const {
return rotating;
}
diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp
index 6faaf4ac41..c274ce1fcd 100644
--- a/src/mbgl/map/transform_state.hpp
+++ b/src/mbgl/map/transform_state.hpp
@@ -60,7 +60,6 @@ public:
float getPitch() const;
// State
- bool isChanging() const;
bool isRotating() const;
bool isScaling() const;
bool isPanning() const;
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp
index d4ac5f94e9..a7b0d3fa6c 100644
--- a/src/mbgl/renderer/painter_symbol.cpp
+++ b/src/mbgl/renderer/painter_symbol.cpp
@@ -70,7 +70,7 @@ void Painter::renderSymbol(PaintParameters& parameters,
SpriteAtlas& atlas = *layer.impl->spriteAtlas;
const bool iconScaled = values.paintSize != 1.0f || frame.pixelRatio != atlas.getPixelRatio() || bucket.iconsNeedLinear;
const bool iconTransformed = values.rotationAlignment == AlignmentType::Map || state.getPitch() != 0;
- atlas.bind(bucket.sdfIcons || state.isChanging() || iconScaled || iconTransformed, context, 0);
+ atlas.bind(bucket.sdfIcons || state.isScaling() || state.isRotating() || iconScaled || iconTransformed, context, 0);
std::array<uint16_t, 2> texsize {{ atlas.getWidth(), atlas.getHeight() }};
diff --git a/test/api/annotations.test.cpp b/test/api/annotations.test.cpp
index 06a0a61b0a..be71ba85c9 100644
--- a/test/api/annotations.test.cpp
+++ b/test/api/annotations.test.cpp
@@ -49,6 +49,7 @@ TEST(Annotations, SymbolAnnotation) {
auto screenBox = ScreenBox { {}, { double(size.width), double(size.height) } };
auto features = test.map.queryPointAnnotations(screenBox);
EXPECT_EQ(features.size(), 1u);
+ test.checkRendering("point_annotation");
test.map.setZoom(test.map.getMaxZoom());
test.checkRendering("point_annotation");
@@ -57,6 +58,21 @@ TEST(Annotations, SymbolAnnotation) {
EXPECT_EQ(features.size(), 1u);
}
+TEST(Annotations, SymbolLinearInterpolation)
+{
+ AnnotationTest test;
+
+ test.map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"));
+ test.map.addAnnotationIcon("default_marker", namedMarker("default_marker.png"));
+ test.map.addAnnotation(SymbolAnnotation { Point<double>(0.15, 0.15), "default_marker" });
+ test.checkRendering("point_annotation");
+
+ // Should not trigger GL_LINEAR when binding the symbol shader.
+ test.map.setGestureInProgress(true);
+ test.map.moveBy({});
+ test.checkRendering("point_annotation");
+}
+
TEST(Annotations, LineAnnotation) {
AnnotationTest test;