mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Merge pull request #16356 from alalek:dnn_ie_prevent_plugins_unloading
This commit is contained in:
commit
bd66f76fea
@ -563,11 +563,45 @@ static std::map<std::string, InferenceEngine::InferenceEnginePluginPtr>& getShar
|
|||||||
return sharedPlugins;
|
return sharedPlugins;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
InferenceEngine::Core& getCore()
|
static bool init_IE_plugins()
|
||||||
|
{
|
||||||
|
// load and hold IE plugins
|
||||||
|
static InferenceEngine::Core* init_core = new InferenceEngine::Core(); // 'delete' is never called
|
||||||
|
(void)init_core->GetAvailableDevices();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
static InferenceEngine::Core& create_IE_Core_instance()
|
||||||
{
|
{
|
||||||
static InferenceEngine::Core core;
|
static InferenceEngine::Core core;
|
||||||
return core;
|
return core;
|
||||||
}
|
}
|
||||||
|
static InferenceEngine::Core& create_IE_Core_pointer()
|
||||||
|
{
|
||||||
|
// load and hold IE plugins
|
||||||
|
static InferenceEngine::Core* core = new InferenceEngine::Core(); // 'delete' is never called
|
||||||
|
return *core;
|
||||||
|
}
|
||||||
|
InferenceEngine::Core& getCore()
|
||||||
|
{
|
||||||
|
// to make happy memory leak tools use:
|
||||||
|
// - OPENCV_DNN_INFERENCE_ENGINE_HOLD_PLUGINS=0
|
||||||
|
// - OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND=0
|
||||||
|
static bool param_DNN_INFERENCE_ENGINE_HOLD_PLUGINS = utils::getConfigurationParameterBool("OPENCV_DNN_INFERENCE_ENGINE_HOLD_PLUGINS", true);
|
||||||
|
static bool init_IE_plugins_ = param_DNN_INFERENCE_ENGINE_HOLD_PLUGINS && init_IE_plugins(); CV_UNUSED(init_IE_plugins_);
|
||||||
|
|
||||||
|
static bool param_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND =
|
||||||
|
utils::getConfigurationParameterBool("OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND",
|
||||||
|
#ifdef _WIN32
|
||||||
|
true
|
||||||
|
#else
|
||||||
|
false
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
static InferenceEngine::Core& core = param_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND
|
||||||
|
? create_IE_Core_pointer()
|
||||||
|
: create_IE_Core_instance();
|
||||||
|
return core;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(OPENCV_DNN_IE_VPU_TYPE_DEFAULT)
|
#if !defined(OPENCV_DNN_IE_VPU_TYPE_DEFAULT)
|
||||||
|
Loading…
Reference in New Issue
Block a user