}
};
+static StdMatAllocator *mat_allocator = NULL;
MatAllocator* Mat::getStdAllocator()
{
- static StdMatAllocator allocator;
- return &allocator;
+ if (mat_allocator == NULL)
+ {
+ mat_allocator = new StdMatAllocator();
+ }
+ return mat_allocator;
}
void swap( Mat& a, Mat& b )
MatAllocator* matStdAllocator;
};
+// This line should not force OpenCL runtime initialization! (don't put "new OpenCLAllocator()" here)
+static MatAllocator *ocl_allocator = NULL;
MatAllocator* getOpenCLAllocator()
{
- static MatAllocator * allocator = new OpenCLAllocator();
- return allocator;
+ if (ocl_allocator == NULL)
+ {
+ ocl_allocator = new OpenCLAllocator();
+ }
+ return ocl_allocator;
}
///////////////////////////////////////////// Utility functions /////////////////////////////////////////////////