-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Conversation
f60c1d7
to
053d743
Compare
053d743
to
dc449f6
Compare
6812435
to
18454f2
Compare
I am unable to reason how the following scenario would work correctly in the new threading model. 1.) SourceInfo objects are created upon parsing style.json. When style.json is changed these SourceInfo objects would get deleted. ( They reside under Map.style.layers.layers.bucket.style_source.info ). |
they can only be called by View::resize
stopgap until we have a solution that doesn't mutate the style objects while parsing a tile
this is a stopgap until we have a solution that gives every worker thread their own copy
18454f2
to
bb8cedf
Compare
Working with @ljbade to debug a deadlock on the FWIW, running the app on OS X through LLDB is working fine. I'm wondering if this is somehow unique to the environment the app is running in on Android, like if the JVM is calling things from different threads than expected, similar to what we hit with |
OK I set up some logging to print the mutex value before and after each lock in Transform. Here is what happens during deadlock:
Something is corrupting the mutex value which results in a deadlock because it thinks some random thread is holding the lock. |
I also logged the pointer value (that points to the mutex value). You can see the pointer is being changed, when it shouldn't so the value is just random memory.
|
we are now scoping all file requests to an environment object. The FileSource implementation treats this as an opaque pointer, but allows canceling all Requests that are associated with that pointer. This is necessary to abort all file requests that originated from a particular Map object. Aborting a file request is different from canceling a file request: A canceled request doesn't have its callback called, while an aborted request will have its callback called with an error, indicating that the environment is going to be shut down.
@mikemorris please note that the API of |
Pushed up some minimal changes in the |
[skip ci]
void cancel(Request *request) override; | ||
void request(const Resource &resource, const Environment &env, Callback callback) override; | ||
|
||
void abort(const Environment &env) override; | ||
|
||
enum class CacheHint : uint8_t { Full, Refresh, No }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like this moved to FileCache::Hint
and is no longer used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, removed in 10d84f6.
Removing this from the milestone as all relevant patches have been integrated into master separately. Will circle back to this after iOS Beta release |
Did something change with the |
No need to load higher-resolution vector tiles for HiDPI displays. Fixes #907.
Do not try to fulfil the promise twice in case both requests to the sprite JSON and image fail. this will crash the program. Instead, we always continue with the promise, instead of throwing an exception. This allows the program to continue parsing tiles, but without an image sprite available. This means the map will render, but without the sprite images
This has been superseded by #1272 |
This changes the way Map objects are being rendered. Instead of
start()
andstop()
launching a new thread, we're now starting a new thread as soon as the Map object is constructed, which runs until the Map object is destructed. This means that we don't have to start/stop thread for static rendering and overall simplifies the way we access OpenGL from multiple threads (we don't anymore).Disable fading for static map renders(see Disable fading when rendering still images #942)