From 3efbb69e0c94e72ca88d4d2dca4aadde6f3df652 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 10 Apr 2015 17:28:39 -0700 Subject: [PATCH] Ensure that ~TileData happens on map thread Fixes #1251 --- src/mbgl/map/tile_data.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mbgl/map/tile_data.cpp b/src/mbgl/map/tile_data.cpp index 72e356bbf..bb8d18d12 100644 --- a/src/mbgl/map/tile_data.cpp +++ b/src/mbgl/map/tile_data.cpp @@ -64,5 +64,9 @@ void TileData::reparse(Worker& worker, std::function callback) { EnvironmentScope scope(tile->env, ThreadType::TileWorker, "TileWorker_" + tile->name); tile->parse(); }, - callback); + [tile, callback]() { + // `tile` is bound in this lambda to ensure that if it's the last owning pointer, + // destruction happens on the map thread, not the worker thread. + callback(); + }); }