1 #pragma once
2 
3 #include <memory>
4 
5 namespace mbgl {
6 
7 class RendererObserver;
8 class UpdateParameters;
9 
10 // The RenderFrontend is the bridge between the Map and
11 // platform used to update and observer the Renderer
12 //
13 // It hides any threading specifics and always replies on
14 // the original thread.
15 class RendererFrontend {
16 public:
17 
18     virtual ~RendererFrontend() = default;
19 
20     // Must synchronously clean up the Renderer if set
21     virtual void reset() = 0;
22 
23     // Implementer must bind the renderer observer to the renderer in a
24     // appropriate manner so that the callbacks occur on the main thread
25     virtual void setObserver(RendererObserver&) = 0;
26 
27     // Coalescing updates is up to the implementer
28     virtual void update(std::shared_ptr<UpdateParameters>) = 0;
29 };
30 
31 } // namespace mbgl
32