Commit Graph

97 Commits

Author SHA1 Message Date
Konstantin Käfer
b0a30943b4 move most private Map code to MapContext 2015-04-28 14:32:20 -04:00
Konstantin Käfer
9dc51e7f80 move rendering mode enum to MapData object 2015-04-28 14:32:20 -04:00
Konstantin Käfer
fa272b3aaa move asyncRender to MapContext 2015-04-28 14:32:20 -04:00
Konstantin Käfer
f8600d8d97 move getSprite to MapContext 2015-04-28 14:32:20 -04:00
Konstantin Käfer
9580ec7b08 move Style to MapContext 2015-04-28 14:32:20 -04:00
Konstantin Käfer
f272d13dea move worker to MapContext 2015-04-28 14:32:19 -04:00
Konstantin Käfer
67fa80f5e9 move MapContext to its own file 2015-04-28 14:32:19 -04:00
Konstantin Käfer
07525d5d50 move Sprite to MapContext 2015-04-28 14:32:19 -04:00
Konstantin Käfer
9af7af3109 move GlyphStore to MapContext 2015-04-28 14:32:19 -04:00
Konstantin Käfer
63acd5b0a1 move texturepool to context 2015-04-28 14:32:19 -04:00
Konstantin Käfer
9b64edd712 remove unused reference 2015-04-28 14:32:18 -04:00
Konstantin Käfer
ad0178fd45 move atlas/painter to map context 2015-04-28 14:32:18 -04:00
Konstantin Käfer
7c8c45edab move activeSources to internal Map context 2015-04-28 14:32:18 -04:00
Konstantin Käfer
89167cbf8c move Transform into MapData and make source unaware of the Map object 2015-04-28 14:32:18 -04:00
Konstantin Käfer
cc8f440c84 move TransformState to MapData object 2015-04-28 14:32:17 -04:00
Konstantin Käfer
71d127220b rename Mode::Static => Mode::Still 2015-04-17 17:55:24 +02:00
Konstantin Käfer
5d769f9b62 explicitly call .discard() to resize the view on static renders
- this is only a stopgap; we need to properly pass state between threads
- doesn't fix changing the pixel ratio
2015-04-17 13:40:42 +02:00
Konstantin Käfer
46bf226910 align static render mode and still image render mode
- static rendering now also runs in a separate thread; you have to start it with map.start(Map::Mode::Static) and join the thread with map.stop() before destructing the Map object
- map.renderStill() takes a callback with will be invoked on the *map* thread, so you'll have to figure out your own method of dispatching back to the main thread.
2015-04-17 13:40:42 +02:00
Justin R. Miller
190709c6b1 fixes #1157, #1255: cache parsed tiles in memory 2015-04-16 01:15:41 -07:00
John Firebaugh
0c087603e6 Replace uv_messenger with AsyncQueue; rewrite remaining uv_* in C++ 2015-04-09 15:30:58 -07:00
John Firebaugh
691756d7dd Move ClipID to clip_id.hpp/cpp 2015-04-09 10:58:11 -07:00
John Firebaugh
d8411f26d2 Tile::ID ⇢ TileID
This allows making both Tile and TileID private.
2015-04-06 13:58:56 -07:00
John Firebaugh
15969f1369 Remove Map dependency from Source::invalidateTiles 2015-04-06 10:30:02 -07:00
John Firebaugh
750cfb6f58 Remove Map dependency from Source::load 2015-04-06 10:30:01 -07:00
John Firebaugh
7e0e55e542 Eliminate StyleSource
Fixes #695
2015-04-06 10:30:01 -07:00
Minh Nguyễn
6a1e7d5707 Fixed race condition after setting access token
`Map` should be able to deal with having no access token or JSON even while it’s running. Most of `Map` accounts for this situation, but `reloadStyle()` incorrectly assumes that one or the other is set. This change corrects the assumption in `reloadStyle()`.

Also expose the access token and style name to clients as ordinary KVO-compliant properties. Actually, they’re not so ordinary because they’re inspectable!

Ref #1070, #1147
2015-04-03 12:07:53 -07:00
Justin R. Miller
0a736c3a76 fixes #1181: fix lat/lng & zoom ordering problems 2015-04-02 19:56:47 -07:00
John Firebaugh
12c07b916b Rework easing transition code
This brings the easing transition code a bit closer to how easings work
in gl-js. Instead of having an array of individual transitions for scale,
rotate, and pan, there is a single transition function that does all the
required calculations. This permits us to:

* Eliminate the "timeout" transition. (Fixes #126)
* Replace start/stopPanning() et al with setGestureInProgress(). Apps or
  SDKs are expected to make paired calls to setGestureInProgress(). This
  state will be ORed with the active easing state to determine when to
  use texture interpolation. (Fixes #79)
* Run style recalculations only when an ease transition that affects the
  zoom is in progress. (Fixes #1155)
2015-04-02 16:12:29 -07:00
John Firebaugh
9331acf8e6 Add typedefs for std::chrono::steady_clock types 2015-04-02 12:28:12 +02:00
John Firebaugh
13991cf786 Rename methods to match gl-js 2015-04-01 12:37:41 -07:00
John Firebaugh
5264982ba7 Eliminate StyleLayerGroup 2015-04-01 11:14:20 -07:00
Konstantin Käfer
220ebf61dd replace iterator variable types with auto 2015-04-01 16:42:42 +02:00
Justin R. Miller
a8833c34d4 fixes #892: support mapbox:// style URLs 2015-03-30 15:33:02 -07:00
Konstantin Käfer
743619dee9 Disable all Sources when terminating 2015-03-27 17:09:25 +01:00
Konstantin Käfer
4249c955d0 make sure the map terminates 2015-03-27 16:39:50 +01:00
Konstantin Käfer
a2629393b3 dispatch all AnnotationManager calls to the map thread
calls that return a value block until the operation was executed
2015-03-27 12:56:41 +01:00
Konstantin Käfer
54cd6a59de make sure that we always have a style object after prepar() 2015-03-26 16:12:49 +01:00
Justin R. Miller
10a30daed6 refs #894, fixes #1074: callout views for iOS 2015-03-24 18:43:24 -07:00
Konstantin Käfer
2990f38824 Merge pull request #1073 from mapbox/debug_crash
Fix crash on debug build
2015-03-24 15:14:48 +01:00
Justin R. Miller
c5597ad6f1 annotations perf improvements & iOS app testing
squash of #1061
2015-03-23 20:49:02 -07:00
Thiago Marcos P. Santos
0603d8f5e3 Fix crash on debug build
styleInfo is being passed to request() by reference but it is stack
allocated and goes out of scope. Pass the bits we are interested by
value instead.
2015-03-24 00:44:07 +02:00
Justin R. Miller
486a385f98 Merge branch 'master' into 1022-annotations-thread-safety 2015-03-23 11:13:51 -07:00
Konstantin Käfer
9d30d4042c delete the workers in the correct thread
fixes #1066
2015-03-23 12:18:40 +01:00
Konstantin Käfer
d2faca1861 move style classes to MapData object and make thread safe 2015-03-23 11:02:21 +01:00
Konstantin Käfer
3d2dcbb6ef move accessToken to MapData 2015-03-23 11:02:21 +01:00
Konstantin Käfer
9637176711 move defaultTransitionDuration to MapData 2015-03-23 11:02:19 +01:00
Konstantin Käfer
268975d4c2 move animationTime to MapData store 2015-03-23 11:01:39 +01:00
Konstantin Käfer
03e400e002 make the debug flag atomic and move to MapData 2015-03-23 11:01:02 +01:00
Konstantin Käfer
ebd2985f78 make style updates a little more threadsafe
- we're now always loading and parsing styles in the map thread
- adds an atomic enum that stores the actual updates we need to perform
- adds a MapData object that mutexes access to variables used from both threads
2015-03-23 11:01:01 +01:00
Konstantin Käfer
61fa436193 coalesce buffer deletions and run them in bulk during rendering
On iOS, the main thread does framebuffer operations just before it requests a rerender of the view contents. This means that GL operations on the Map thread will interfere with that and cause a crash. While most GL operations happen throughout rendering (which is synchronized with the main thread), deletion of shared_ptrs release in turn their OpenGL objects. This may happen at any time and isn't synced with rendering.

This patch changes this so instead of deleting all objects immediately, we are collecting all abandoned IDs and delete them in bulk once the main thread has given us permission to use OpenGL calls (i.e. during render()).
2015-03-20 19:47:54 +01:00