Make sure AndroidRendererFrontend exists when accessing it (#3522)

This commit is contained in:
Bart Louwers
2025-06-04 18:40:50 +02:00
committed by GitHub
parent b11134a301
commit 47605a92fa
4 changed files with 29 additions and 10 deletions

View File

@@ -91,13 +91,24 @@ private:
ActorRef<RendererObserver> delegate;
};
AndroidRendererFrontend::AndroidRendererFrontend(MapRenderer& mapRenderer_)
AndroidRendererFrontend::AndroidRendererFrontend(Private, MapRenderer& mapRenderer_)
: mapRenderer(mapRenderer_),
mapRunLoop(util::RunLoop::Get()),
updateAsyncTask(std::make_unique<util::AsyncTask>([this]() {
mapRenderer.update(std::move(updateParams));
mapRenderer.requestRender();
})) {}
mapRunLoop(util::RunLoop::Get()) {}
std::shared_ptr<AndroidRendererFrontend> AndroidRendererFrontend::create(MapRenderer& mapRenderer) {
auto ptr = std::make_shared<AndroidRendererFrontend>(Private(), mapRenderer);
ptr->init();
return ptr;
}
void AndroidRendererFrontend::init() {
updateAsyncTask = std::make_unique<util::AsyncTask>([weakSelf = weak_from_this()]() {
if (auto self = weakSelf.lock()) {
self->mapRenderer.update(std::move(self->updateParams));
self->mapRenderer.requestRender();
}
});
}
AndroidRendererFrontend::~AndroidRendererFrontend() = default;