}
};
-namespace
+static
+MatAllocator*& getDefaultAllocatorMatRef()
{
- MatAllocator* volatile g_matAllocator = NULL;
+ static MatAllocator* g_matAllocator = Mat::getStdAllocator();
+ return g_matAllocator;
}
MatAllocator* Mat::getDefaultAllocator()
{
- if (g_matAllocator == NULL)
- {
- cv::AutoLock lock(cv::getInitializationMutex());
- if (g_matAllocator == NULL)
- {
- g_matAllocator = getStdAllocator();
- }
- }
- return g_matAllocator;
+ return getDefaultAllocatorMatRef();
}
+
void Mat::setDefaultAllocator(MatAllocator* allocator)
{
- g_matAllocator = allocator;
+ getDefaultAllocatorMatRef() = allocator;
}
+
MatAllocator* Mat::getStdAllocator()
{
CV_SINGLETON_LAZY_INIT(MatAllocator, new StdMatAllocator())