Mesh::MeshObject* run(const std::vector<Mesh::MeshObjectConstRef>& meshdata) { std::vector<Mesh::MeshObjectConstRef> meshes = meshdata; if (meshes.empty()) return 0; // nothing todo Mesh::MeshObjectConstRef myMesh = 0; std::sort(meshes.begin(), meshes.end(), MeshObject_greater()); myMesh = meshes.front(); if (meshes.size() > 1) { MeshCore::MeshKernel kernel; // copy the data of the first mesh, this will be the new model then kernel = myMesh->getKernel(); for (std::vector<Mesh::MeshObjectConstRef>::iterator it = meshes.begin(); it != meshes.end(); ++it) { if (*it != myMesh) { Base::Console().Message("MeshTestJob::run() in thread: %p\n", QThread::currentThreadId()); } } // avoid to copy the data Mesh::MeshObject* mesh = new Mesh::MeshObject(); mesh->swap(kernel); return mesh; } else { Mesh::MeshObject* mesh = new Mesh::MeshObject(); mesh->setKernel(myMesh->getKernel()); return mesh; } }