allow for cancellable request, track in tiles, and cancel when obsolete
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
#include <llmr/renderer/fill_bucket.hpp>
|
||||
#include <llmr/renderer/line_bucket.hpp>
|
||||
#include <llmr/renderer/point_bucket.hpp>
|
||||
#include <llmr/platform/platform.hpp>
|
||||
#include <llmr/util/pbf.hpp>
|
||||
#include <llmr/util/string.hpp>
|
||||
|
||||
@@ -75,7 +74,7 @@ void Tile::request() {
|
||||
|
||||
// Note: Somehow this feels slower than the change to request_http()
|
||||
std::shared_ptr<Tile> tile = shared_from_this();
|
||||
platform::request_http_tile(url, tile, [=](platform::Response& res) {
|
||||
platform::Request request = platform::request_http(url, [=](platform::Response& res) {
|
||||
if (res.code == 200 && tile->state != obsolete) {
|
||||
tile->state = Tile::loaded;
|
||||
tile->data.swap(res.body);
|
||||
@@ -86,12 +85,14 @@ void Tile::request() {
|
||||
}, []() {
|
||||
platform::restart();
|
||||
});
|
||||
req = request;
|
||||
}
|
||||
|
||||
void Tile::cancel() {
|
||||
// TODO: thread safety
|
||||
if (state != obsolete) {
|
||||
state = obsolete;
|
||||
platform::cancel_request_http(req);
|
||||
} else {
|
||||
assert((!"logic error? multiple cancelleations"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user