It was weirdly split which parts the task does edit and which parts the main thread does.
CMapGeneratorWorker is now unaware of threads and synchronisation (Except for the progress). There is no explicit std::mutex anymore.
The only purpose of CMapGeneratorCallbackData (the old CMapGeneratorWorker) is to provide the callbacks to the script (hence the renaming).
The internal API is easyer: The MapGenerator does only have to construct the MapGeneratorCallbackData and call Execute on it.
The external API is easyer: MapGenerator::GetResult could have ben called when the generation wasn't finished (leading to UB). Now It does wait for the result.
Likely performance is improved but that's a secondary-effect.