fix: make render orchestrator teardown safe
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
tei
2026-10-07 08:41:08 +09:00
parent d29e84c1a9
commit 64cf8f4435
13 changed files with 1483 additions and 6 deletions

View File

@@ -195,6 +195,7 @@ void MapRenderer::requestSnapshot(SnapshotCallback callback) {
// Called on OpenGL thread //
void MapRenderer::resetRenderer() {
Log::Info(Event::Android, "MapRenderer::resetRenderer entered");
renderer.reset();
if (!asyncRendererCleanup) {
@@ -203,6 +204,7 @@ void MapRenderer::resetRenderer() {
window.reset();
swapBehaviorFlush = false;
Log::Info(Event::Android, "MapRenderer::resetRenderer completed");
}
void MapRenderer::scheduleSnapshot(std::unique_ptr<SnapshotCallback> callback) {
@@ -322,9 +324,11 @@ void MapRenderer::onSurfaceChanged([[maybe_unused]] JNIEnv& env, jint width, jin
}
void MapRenderer::onRendererReset(JNIEnv&) {
Log::Info(Event::Android, "MapRenderer::nativeReset entered");
// Make sure to destroy the renderer on the GL Thread
auto self = ActorRef<MapRenderer>(*this, mailboxData.getMailbox());
self.ask(&MapRenderer::resetRenderer).wait();
Log::Info(Event::Android, "MapRenderer::nativeReset completed");
}
// needs to be called on GL thread