summaryrefslogtreecommitdiff
path: root/include/mbgl/gfx/renderer_backend.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/gfx/renderer_backend.hpp')
-rw-r--r--include/mbgl/gfx/renderer_backend.hpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/include/mbgl/gfx/renderer_backend.hpp b/include/mbgl/gfx/renderer_backend.hpp
index 032c7021da..29f6b43a8f 100644
--- a/include/mbgl/gfx/renderer_backend.hpp
+++ b/include/mbgl/gfx/renderer_backend.hpp
@@ -12,10 +12,15 @@ class Context;
class Renderable;
class BackendScope;
-// TODO: Rename to "Device"
+// We can make some optimizations if we know that the drawing context is not shared with other code.
+enum class ContextMode : bool {
+ Unique,
+ Shared,
+};
+
class RendererBackend {
protected:
- explicit RendererBackend();
+ explicit RendererBackend(ContextMode);
public:
virtual ~RendererBackend();
@@ -25,6 +30,10 @@ public:
// Returns the device's context.
Context& getContext();
+ bool contextIsShared() const {
+ return contextMode == ContextMode::Shared;
+ }
+
// Returns a reference to the default surface that should be rendered on.
virtual Renderable& getDefaultRenderable() = 0;
@@ -44,6 +53,7 @@ protected:
protected:
std::unique_ptr<Context> context;
+ const ContextMode contextMode;
std::once_flag initialized;
friend class BackendScope;