diff options
Diffstat (limited to 'platform/android/src/android_renderer_frontend.hpp')
-rw-r--r-- | platform/android/src/android_renderer_frontend.hpp | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/platform/android/src/android_renderer_frontend.hpp b/platform/android/src/android_renderer_frontend.hpp index 107bbbe0b6..f2e951bd05 100644 --- a/platform/android/src/android_renderer_frontend.hpp +++ b/platform/android/src/android_renderer_frontend.hpp @@ -1,34 +1,50 @@ #pragma once +#include "android_gl_thread.hpp" + +#include <mbgl/actor/actor.hpp> #include <mbgl/annotation/annotation.hpp> #include <mbgl/renderer/renderer_backend.hpp> #include <mbgl/renderer/renderer_frontend.hpp> #include <mbgl/util/async_task.hpp> #include <mbgl/util/geo.hpp> +#include <mbgl/util/image.hpp> +#include <mbgl/util/run_loop.hpp> #include <functional> #include <memory> #include <vector> +#include <string> namespace mbgl { -class Renderer; +class FileSource; +class Scheduler; class RenderedQueryOptions; class SourceQueryOptions; namespace android { +class AndroidRendererBackend; + class AndroidRendererFrontend : public RendererFrontend { public: using InvalidateCallback = std::function<void ()>; - AndroidRendererFrontend(std::unique_ptr<Renderer>, RendererBackend&, InvalidateCallback); + + AndroidRendererFrontend(float pixelRatio, + mbgl::FileSource&, + mbgl::Scheduler&, + std::string programCacheDir, + InvalidateCallback); ~AndroidRendererFrontend() override; void reset() override; void setObserver(RendererObserver&) override; void update(std::shared_ptr<UpdateParameters>) override; + + // Called from OpenGL Thread void render(); // Feature querying @@ -37,14 +53,31 @@ public: std::vector<Feature> querySourceFeatures(const std::string& sourceID, const SourceQueryOptions&) const; AnnotationIDs queryPointAnnotations(const ScreenBox& box) const; + // RenderBackend proxy - Called from OpenGL Thread + void resizeFramebuffer(int width, int height); + // Memory void onLowMemory(); + // Snapshot - Callback will be called on calling thread through RunLoop + using SnapshotCallback = std::function<void (PremultipliedImage)>; + void requestSnapshot(SnapshotCallback); + private: - std::unique_ptr<Renderer> renderer; - RendererBackend& backend; + std::unique_ptr<AndroidRendererBackend> backend; + std::unique_ptr<AndroidGLThread> glThread; + std::unique_ptr<RendererObserver> rendererObserver; + + std::mutex updateMutex; std::shared_ptr<UpdateParameters> updateParameters; + + util::AsyncTask asyncInvalidate; + + util::RunLoop* mapRunLoop; + + bool framebufferSizeChanged = true; + std::unique_ptr<SnapshotCallback> snapshotCallback; }; } // namespace android |