diff --git a/src/GraphCtrl/GraphPipeline/GPipelineFactory.cpp b/src/GraphCtrl/GraphPipeline/GPipelineFactory.cpp index 1a423195..9b4ddbab 100644 --- a/src/GraphCtrl/GraphPipeline/GPipelineFactory.cpp +++ b/src/GraphCtrl/GraphPipeline/GPipelineFactory.cpp @@ -15,10 +15,14 @@ std::mutex GPipelineFactory::s_lock_; GPipelinePtr GPipelineFactory::create() { CGRAPH_FUNCTION_BEGIN - CGRAPH_LOCK_GUARD lock(s_lock_); - + auto pipeline = CGRAPH_SAFE_MALLOC_COBJECT(GPipeline) - s_pipeline_list_.emplace_back(pipeline); + + { + CGRAPH_LOCK_GUARD lock(s_lock_); + s_pipeline_list_.emplace_back(pipeline); + } + return pipeline; } @@ -27,8 +31,10 @@ CStatus GPipelineFactory::remove(GPipelinePtr pipeline) { CGRAPH_FUNCTION_BEGIN CGRAPH_ASSERT_NOT_NULL(pipeline) - CGRAPH_LOCK_GUARD lock(s_lock_); - s_pipeline_list_.remove(pipeline); + { + CGRAPH_LOCK_GUARD lock(s_lock_); + s_pipeline_list_.remove(pipeline); + } CGRAPH_DELETE_PTR(pipeline) CGRAPH_FUNCTION_END @@ -37,13 +43,16 @@ CStatus GPipelineFactory::remove(GPipelinePtr pipeline) { CStatus GPipelineFactory::clear() { CGRAPH_FUNCTION_BEGIN - CGRAPH_LOCK_GUARD lock(s_lock_); - for (GPipelinePtr pipeline : GPipelineFactory::s_pipeline_list_) { - CGRAPH_DELETE_PTR(pipeline) + { + CGRAPH_LOCK_GUARD lock(s_lock_); + for (GPipelinePtr pipeline : GPipelineFactory::s_pipeline_list_) { + CGRAPH_DELETE_PTR(pipeline) + } + + s_pipeline_list_.clear(); } - s_pipeline_list_.clear(); CGRAPH_FUNCTION_END }