Commit Graph

1213 Commits

Author SHA1 Message Date
Konstantin Käfer
cbff0a972a [core] don't generate clip IDs for buckets/layers that don't need to be clipped 2017-10-17 15:08:22 -07:00
John Firebaugh
12f78fc874 [core] Use convertJSON instead of RapidJSON directly 2017-10-16 17:14:19 -07:00
Anand Thakker
b8654b3b04 [core] Move SourceType to the 'style' namespace 2017-10-16 16:32:53 -07:00
Konstantin Käfer
f4cb3b8a4f [core] make forcing cache/network only more explicit
Previously, we used the existence of a `prior*` field in the Resource object as an indication for whether we should consult the cache or not. However, this is prone to error, since a failed cache lookup won't set any prior fields. Therefore, we manually set `priorExpires` to 0. This in turn triggered another bug where generated wrong expiration timestamps when the server response we got was expired (or expired between sending and receiving).

This commit changes the flags so that we can now explicitly request CacheOnly/NetworkOnly (or All) loading methods, rather than the implicit Optional/Required naming scheme.
2017-10-12 10:41:49 +02:00
Asheem Mamoowala
2366487275 [core] Add cameraForLatLngs() method with modified bearing 2017-10-09 11:42:37 -07:00
Bruno de Oliveira Abinader
c9e9cd2aff [test] Added GlyphManager.ImmediateFileSource 2017-10-09 13:33:30 +03:00
Konstantin Käfer
8fae8a1645 [core] Add minzoom to GeoJSONOptions 2017-09-28 15:47:21 -07:00
Konstantin Käfer
f281e6ae8a [core] fix loading of stale must-revalidate resources
In https://github.com/mapbox/mapbox-gl-native/pull/9670, we implemented support for the Cache-Control: must-revalidate header. While we now respect this header and don't show resources that are stale and have this header set, the optional cache request never completes. This means we're also never going to try to actually get a fresh tile and just never show this tile anymore.

This commit fixes this by responding with a Not Found error when the resource is unusable (= stale and has must-revalidate set). Since we actually still have the data (but can't use it due to caching rules), we're responding with the data as well. To avoid a second cache hit, tile_loader_impl.hpp now passes on the data from the Optional to the Required request so that it can be reused when we get a 304 Not Modified response from the server.
2017-09-25 10:47:20 +02:00
Ivo van Dongen
8b9794b1a7 [core] Actor/ActorRef - ask calls to void methods
- allows to wait for execution of void methods as well as non-void methods
2017-09-22 23:33:56 +03:00
Konstantin Käfer
ca4f0bbcc5 [test] add test for rendering a 204 No Content tile 2017-09-22 19:24:42 +02:00
Lauren Budorick
a9ddf5b7fd Preserve depth buffer between 3D layers + optimize render order (#9931)
Port of https://github.com/mapbox/mapbox-gl-js/pull/5101: adds a new render pass `Pass3D` before any other rendering wherein we render layers with 3D passes (fill-extrusion layers) to offscreen framebuffers, sharing a depth renderbuffer between those layers in order to render 3D space correctly. Those framebuffers are saved on the RenderLayers and copied back to the map during the translucent pass. Rendering to offscreen framebuffers before we do any clear + draw means we can avoid expensive framebuffer restores.
2017-09-21 14:26:48 -07:00
Konstantin Käfer
f659aa4eda [core] make sure tiles are not treated as complete until all worker operations completed
Previously, when we started a worker operation that eventually throws an exception (e.g. due to the tile not being parseable), and then enqueue another worker operation while the first one is processing, we treated the worker as idle once the first operation's error callback fired, even though the second operation was still in progress. Due to our use of coalescing, I was unable to come up with a reliable test since we'd need to reproduce the behavior described above, which is timing dependent.
2017-09-21 12:20:54 +02:00
Konstantin Käfer
1a684c1f48 [core] keep tiles renderable even if a subsequent error occurs
Since 9a9408e811, we marked tiles as non-renderable if an error occured. This lead to situations where a tile was loaded + parsed successfully, then a revalidation attempt occured (e.g. because the resource was stale) which failed. In this case, we used to mark the tile as non-renderable although we could've used the perfectly parsed (stale) resource.
2017-09-21 12:20:54 +02:00
Bruno de Oliveira Abinader
45d07163eb [core] Reset zoom history state in still mode 2017-09-15 16:41:29 -03:00
Asheem Mamoowala
50fd917510 Fast tileCount with help from @mapbox/sphericalmercator module 2017-09-08 17:38:42 -07:00
Asheem Mamoowala
a2712f6fa4 Update to gejson 0.4.2 and add StyleParser test to verify that GeoJSON without properties field can be loaded 2017-08-28 15:43:18 -07:00
Lauren Budorick
2de89a99bc Implement icon-anchor property 2017-08-28 13:32:56 -07:00
Bruno de Oliveira Abinader
fe8cbc78d3 [core] Added GeometryTileWorker-owned image correlation ID 2017-08-25 23:41:52 +03:00
John Firebaugh
e706ed4b2e [core] Avoid RenderStyle dependency in query code 2017-08-24 13:06:23 -07:00
Thiago Marcos P. Santos
bd15e273dc [tests] Enforce the schema downgrade behavior
Which is, delete and recreate the database.
2017-08-22 12:46:38 +03:00
Bruno de Oliveira Abinader
224e9e6261 [test] Re-added API.ZoomHistory 2017-08-22 10:17:25 +03:00
Chris Loer
fd2b525c4d [core] Correct x-offset introduced by vertical glyph rotation
Fixes issue#9768.
Port of GL JS PR #5100.
2017-08-18 10:53:26 -07:00
Bruno de Oliveira Abinader
5d62028ed2 [test] Added API.RecycleMapUpdateImages test 2017-08-14 18:23:03 +03:00
Bruno de Oliveira Abinader
bd4441503f [test] Added Map.SetStyleDefaultCamera test 2017-08-11 22:04:52 +03:00
Bruno de Oliveira Abinader
6179e0f9c0 [core] Added Style::getDefaultCamera() 2017-08-11 22:04:52 +03:00
Konstantin Käfer
f0a7c45064 [core] finish must-revalidate support 2017-08-08 12:40:38 +02:00
Ivo van Dongen
68f470fdda [core] make actor self reference optional - again
- uses a different method of constructor selection that also works on Apple clang < 8.2.
2017-08-08 11:36:30 +03:00
Thiago Marcos P. Santos
2dd8ec8854 [core] Removed unused constructor
Not in use at the moment, was causing a compiler error on
Apple LLVM version 8.0.0 (clang-800.0.42.1).

```
src/mbgl/sprite/sprite_loader.cpp:25:11: error: call to constructor of
'Actor<mbgl::SpriteLoaderWorker>' is ambiguous
```
2017-08-07 18:48:42 +03:00
Molly Lloyd
ba7574ec51 [core] modify texture coordinate scaling (#9153)
ignore unsupported dds property tests

fix tests

remove unneeded texture extent variable

bump gl-js to master
2017-07-27 14:54:03 -07:00
John Firebaugh
d4cb498d7a [all] Merge View into RendererBackend 2017-07-26 09:50:38 -07:00
John Firebaugh
32bd1d54fa [node, tests] Consolidate headless rendering logic in HeadlessFrontend 2017-07-26 09:50:38 -07:00
John Firebaugh
11933f6ab8 [core] Remove API tests that are covered by node tests 2017-07-26 09:50:38 -07:00
John Firebaugh
c85193a0ad [core] Replace API.ZoomHistory test with integration test 2017-07-26 09:50:38 -07:00
Ivo van Dongen
5ee05a7781 [core] make actor self reference optional 2017-07-24 19:30:02 +03:00
Ivo van Dongen
81e9ed7fdd [core] add ask pattern to actor ref 2017-07-24 19:30:02 +03:00
Ivo van Dongen
a9ac314a5d [core] implement ask pattern in actor 2017-07-24 19:30:02 +03:00
Konstantin Käfer
c0efad5de2 [core] generate masks for raster tiles to avoid painting over children 2017-07-24 12:10:45 +02:00
Konstantin Käfer
4dff51719b [core] add algorithm for computing masks for raster tiles 2017-07-24 12:10:45 +02:00
John Firebaugh
b43e1ae123 [core] Correctly track sprite loaded state through smart setStyle 2017-07-20 08:58:50 -07:00
Konstantin Käfer
698542cf45 [build] make Xcode use the correct compiler when it is installed in a non-standard location 2017-07-18 11:54:14 +02:00
Ivo van Dongen
9ebf727f56 [core] BackendScope prevent double (de-)activation
- Guards against duplicate activations by checking wether the backend of the prior scope is the same as the current ones
- Makes sure that only the most outer backend scope deactivates by tracking activation state
2017-07-18 10:45:12 +02:00
Ivo van Dongen
a5a0558bde [test] allow only a single shared display to avoid egl errors 2017-07-18 10:45:12 +02:00
Ivo van Dongen
46c43510d7 [core] rename backend to renderer backend 2017-07-18 10:45:12 +02:00
Ivo van Dongen
3832f8d0d8 [core] renderer interface 2017-07-18 10:45:12 +02:00
Ivo van Dongen
57351c068b [core] split backend from mapobserver 2017-07-18 10:45:12 +02:00
Ivo van Dongen
e35cbbae55 [core] mutate style on annotation mutations immediately 2017-07-18 10:45:12 +02:00
Asheem Mamoowala
8ae7010546 [core][ios][android][macos] Use premultiplied image directly for RasterTile and ImageSource, un-premultiply in the shader for blending 2017-07-17 12:20:03 -07:00
Asheem Mamoowala
1d15ed64dc [core] Use shared pointer to manage Image source raster data and speed up change detection 2017-07-17 12:20:03 -07:00
Thiago Marcos P. Santos
544d875445 [tests] Add test to enforce database not found behavior
Make sure all the implementations, currently Qt and Default, throw
an exception with error code CANTOPEN when opening a database that
doesn't exist without the CREATE flag.
2017-07-17 16:47:29 +03:00
Thiago Marcos P. Santos
48ddfef89f [core] Make sure ThreadLocal will not own the pointer it is managing
ThreadLocal should not own the pointer it is managing because
the use case in Mapbox GL is to keep a pointer to a stack allocated
object, like:

```
MyObject foo;
threadLocal.set(&foo);
```

To keep consistency, it is required that we clear the managed
object before ThreadLocal gets destroyed by setting it to `nullptr`.
2017-07-14 15:18:54 +03:00