Add simple static method to retrieve the current loop
In the lines of how we do for getting information of the current thread.
This commit is contained in:
@@ -106,7 +106,7 @@ void MapContext::setStyleURL(const std::string& url) {
|
||||
base = styleURL.substr(0, pos + 1);
|
||||
}
|
||||
|
||||
styleRequest = fs->request({ Resource::Kind::Style, styleURL }, util::RunLoop::current.get()->get(), [this, base](const Response &res) {
|
||||
styleRequest = fs->request({ Resource::Kind::Style, styleURL }, util::RunLoop::getLoop(), [this, base](const Response &res) {
|
||||
styleRequest = nullptr;
|
||||
|
||||
if (res.status == Response::Successful) {
|
||||
|
||||
@@ -30,7 +30,7 @@ void RasterTileData::request(float pixelRatio,
|
||||
state = State::loading;
|
||||
|
||||
FileSource* fs = util::ThreadContext::getFileSource();
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::current.get()->get(), [url, callback, this](const Response &res) {
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
|
||||
@@ -148,7 +148,7 @@ void Source::load() {
|
||||
}
|
||||
|
||||
FileSource* fs = util::ThreadContext::getFileSource();
|
||||
req = fs->request({ Resource::Kind::Source, info.url }, util::RunLoop::current.get()->get(), [this](const Response &res) {
|
||||
req = fs->request({ Resource::Kind::Source, info.url }, util::RunLoop::getLoop(), [this](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
|
||||
@@ -42,7 +42,7 @@ Sprite::Sprite(const std::string& baseUrl, float pixelRatio_)
|
||||
std::string jsonURL(baseUrl + (pixelRatio_ > 1 ? "@2x" : "") + ".json");
|
||||
|
||||
FileSource* fs = util::ThreadContext::getFileSource();
|
||||
jsonRequest = fs->request({ Resource::Kind::JSON, jsonURL }, util::RunLoop::current.get()->get(), [this, jsonURL](const Response &res) {
|
||||
jsonRequest = fs->request({ Resource::Kind::JSON, jsonURL }, util::RunLoop::getLoop(), [this, jsonURL](const Response &res) {
|
||||
jsonRequest = nullptr;
|
||||
if (res.status == Response::Successful) {
|
||||
body = res.data;
|
||||
@@ -56,7 +56,7 @@ Sprite::Sprite(const std::string& baseUrl, float pixelRatio_)
|
||||
emitSpriteLoadedIfComplete();
|
||||
});
|
||||
|
||||
spriteRequest = fs->request({ Resource::Kind::Image, spriteURL }, util::RunLoop::current.get()->get(), [this, spriteURL](const Response &res) {
|
||||
spriteRequest = fs->request({ Resource::Kind::Image, spriteURL }, util::RunLoop::getLoop(), [this, spriteURL](const Response &res) {
|
||||
spriteRequest = nullptr;
|
||||
if (res.status == Response::Successful) {
|
||||
image = res.data;
|
||||
|
||||
@@ -42,7 +42,7 @@ void VectorTileData::request(float pixelRatio, const std::function<void()>& call
|
||||
state = State::loading;
|
||||
|
||||
FileSource* fs = util::ThreadContext::getFileSource();
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::current.get()->get(), [url, callback, this](const Response &res) {
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
|
||||
@@ -30,7 +30,7 @@ GlyphPBF::GlyphPBF(const std::string& glyphURL,
|
||||
|
||||
// The prepare call jumps back to the main thread.
|
||||
FileSource* fs = util::ThreadContext::getFileSource();
|
||||
req = fs->request({ Resource::Kind::Glyphs, url }, util::RunLoop::current.get()->get(), [&, successCallback, failureCallback](const Response &res) {
|
||||
req = fs->request({ Resource::Kind::Glyphs, url }, util::RunLoop::getLoop(), [&, successCallback, failureCallback](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
|
||||
@@ -19,6 +19,10 @@ public:
|
||||
RunLoop(uv_loop_t*);
|
||||
~RunLoop();
|
||||
|
||||
static uv_loop_t* getLoop() {
|
||||
return current.get()->get();
|
||||
}
|
||||
|
||||
void stop();
|
||||
|
||||
// Invoke fn(args...) on this RunLoop.
|
||||
@@ -69,8 +73,6 @@ public:
|
||||
|
||||
uv_loop_t* get() { return async.get()->loop; }
|
||||
|
||||
static uv::tls<RunLoop> current;
|
||||
|
||||
private:
|
||||
template <class F, class P>
|
||||
class Invoker : public WorkTask {
|
||||
@@ -123,6 +125,8 @@ private:
|
||||
Queue queue;
|
||||
std::mutex mutex;
|
||||
uv::async async;
|
||||
|
||||
static uv::tls<RunLoop> current;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user