summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-14 16:56:17 +0200
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-05-10 14:20:38 +0300
commit06f1dc48a2fb317979ab48ce323115be5bd48f16 (patch)
tree5ef1e78a1f98a7a26034ca519e267bda235b2817 /include
parent947bc75f56fae7f1e70f21b98730dc6b460b9194 (diff)
downloadqtlocation-mapboxgl-06f1dc48a2fb317979ab48ce323115be5bd48f16.tar.gz
[core] Make the BackgroundScheduler a singleton
- Do not carry it over everywhere as parameter, it is a shared instance anyway and the lifecycle is pretty much the app lifecycle from the moment we instantiate a map. - Rename to BackgroundScheduler because it is a Scheduler that will do tasks in the background, we don't make assumptions if it is a thread pool or a single thread. - Most importantly, remove the dependency from `core` on `platform`.
Diffstat (limited to 'include')
-rw-r--r--include/mbgl/actor/actor.hpp5
-rw-r--r--include/mbgl/actor/scheduler.hpp5
-rw-r--r--include/mbgl/map/map.hpp2
-rw-r--r--include/mbgl/renderer/renderer.hpp3
-rw-r--r--include/mbgl/style/style.hpp3
5 files changed, 12 insertions, 6 deletions
diff --git a/include/mbgl/actor/actor.hpp b/include/mbgl/actor/actor.hpp
index 0052fad242..97964ae531 100644
--- a/include/mbgl/actor/actor.hpp
+++ b/include/mbgl/actor/actor.hpp
@@ -55,6 +55,10 @@ public:
Actor(Scheduler& scheduler, Args&&... args)
: target(scheduler, parent, std::forward<Args>(args)...) {}
+ template <class... Args>
+ Actor(std::shared_ptr<Scheduler> scheduler, Args&&... args)
+ : retainer(std::move(scheduler)), target(*retainer, parent, std::forward<Args>(args)...) {}
+
Actor(const Actor&) = delete;
ActorRef<std::decay_t<Object>> self() {
@@ -62,6 +66,7 @@ public:
}
private:
+ std::shared_ptr<Scheduler> retainer;
AspiringActor<Object> parent;
EstablishedActor<Object> target;
};
diff --git a/include/mbgl/actor/scheduler.hpp b/include/mbgl/actor/scheduler.hpp
index 75ead29f0a..6470ab1245 100644
--- a/include/mbgl/actor/scheduler.hpp
+++ b/include/mbgl/actor/scheduler.hpp
@@ -41,6 +41,11 @@ public:
// Set/Get the current Scheduler for this thread
static Scheduler* GetCurrent();
static void SetCurrent(Scheduler*);
+
+ // Get the scheduler for asynchronous tasks. This method
+ // will lazily initialize a shared worker pool when ran
+ // from the first time.
+ static std::shared_ptr<Scheduler> GetBackground();
};
} // namespace mbgl
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 2fdd72dcb8..b1d4b14e4f 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -22,7 +22,6 @@
namespace mbgl {
-class Scheduler;
class RendererFrontend;
namespace style {
@@ -34,7 +33,6 @@ class Map : private util::noncopyable {
public:
explicit Map(RendererFrontend&,
MapObserver&,
- Scheduler&,
const MapOptions&,
const ResourceOptions&);
~Map();
diff --git a/include/mbgl/renderer/renderer.hpp b/include/mbgl/renderer/renderer.hpp
index 50483fcf4b..787f9dceee 100644
--- a/include/mbgl/renderer/renderer.hpp
+++ b/include/mbgl/renderer/renderer.hpp
@@ -14,7 +14,6 @@ namespace mbgl {
class RendererObserver;
class RenderedQueryOptions;
-class Scheduler;
class SourceQueryOptions;
class UpdateParameters;
@@ -24,7 +23,7 @@ class RendererBackend;
class Renderer {
public:
- Renderer(gfx::RendererBackend&, float pixelRatio_, Scheduler&,
+ Renderer(gfx::RendererBackend&, float pixelRatio_,
const optional<std::string> programCacheDir = {},
const optional<std::string> localFontFamily = {});
~Renderer();
diff --git a/include/mbgl/style/style.hpp b/include/mbgl/style/style.hpp
index d6fdbd8f2c..4a6a542b88 100644
--- a/include/mbgl/style/style.hpp
+++ b/include/mbgl/style/style.hpp
@@ -11,7 +11,6 @@
namespace mbgl {
class FileSource;
-class Scheduler;
namespace style {
@@ -22,7 +21,7 @@ class Layer;
class Style {
public:
- Style(Scheduler&, FileSource&, float pixelRatio);
+ Style(FileSource&, float pixelRatio);
~Style();
void loadJSON(const std::string&);