From 8242efac97a28a310adbfaf8c0b12713a9053bca Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 16 May 2026 17:03:55 +1000 Subject: [PATCH] Mutex bug fixed so remove hack --- src/ifcviewer/GeometryStreamer.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/ifcviewer/GeometryStreamer.cpp b/src/ifcviewer/GeometryStreamer.cpp index 30d5a8ff6a..786a923a8d 100644 --- a/src/ifcviewer/GeometryStreamer.cpp +++ b/src/ifcviewer/GeometryStreamer.cpp @@ -403,12 +403,6 @@ void GeometryStreamer::run(const std::string& path, int num_threads) { // Wire intersection checks is prohibitively slow on advanced breps. See bug #5999. settings.set("no-wire-intersection-check", true); - // @todo parallel mapping on RocksDB-backed files still races somewhere - // outside the instance cache, producing inconsistent shape counts. Force - // serial iteration for RocksDB until the read path is fully thread-safe. - const bool is_rocksdb = std::holds_alternative(ifc_file_->storage_); - const int effective_threads = is_rocksdb ? 1 : num_threads; - // Mirror bonsai's IfcImporter.process_element_filter: walk IfcElement // (plus IfcProxy on IFC2X3/IFC4), drop IfcFeatureElement except // IfcSurfaceFeature, pick up spatial elements, and split elements @@ -527,7 +521,7 @@ void GeometryStreamer::run(const std::string& path, int num_threads) { ifc_file_.get(), geometry_library, iter_settings); iterator = std::make_unique( std::move(kernel), iter_settings, ifc_file_.get(), - filters, effective_threads); + filters, num_threads); } catch (const std::exception& e) { emit errorOccurred(QString("Failed to create geometry iterator: %1").arg(e.what())); return false;