{
if (prefix.empty())
{
- CV_Assert(!devices.empty());
- const Device& d = devices[0];
- int bits = d.addressBits();
- if (bits > 0 && bits != 64)
- prefix = cv::format("%d-bit--", bits);
- prefix += d.vendorName() + "--" + d.name() + "--" + d.driverVersion();
- // sanitize chars
- for (size_t i = 0; i < prefix.size(); i++)
+ cv::AutoLock lock(program_cache_mutex);
+ if (prefix.empty())
{
- char c = prefix[i];
- if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' || c == '-'))
+ CV_Assert(!devices.empty());
+ const Device& d = devices[0];
+ int bits = d.addressBits();
+ if (bits > 0 && bits != 64)
+ prefix = cv::format("%d-bit--", bits);
+ prefix += d.vendorName() + "--" + d.name() + "--" + d.driverVersion();
+ // sanitize chars
+ for (size_t i = 0; i < prefix.size(); i++)
{
- prefix[i] = '_';
+ char c = prefix[i];
+ if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' || c == '-'))
+ {
+ prefix[i] = '_';
+ }
}
}
}
{
if (prefix_base.empty())
{
- const Device& d = devices[0];
- int bits = d.addressBits();
- if (bits > 0 && bits != 64)
- prefix_base = cv::format("%d-bit--", bits);
- prefix_base += d.vendorName() + "--" + d.name() + "--";
- // sanitize chars
- for (size_t i = 0; i < prefix_base.size(); i++)
+ cv::AutoLock lock(program_cache_mutex);
+ if (prefix_base.empty())
{
- char c = prefix_base[i];
- if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' || c == '-'))
+ const Device& d = devices[0];
+ int bits = d.addressBits();
+ if (bits > 0 && bits != 64)
+ prefix_base = cv::format("%d-bit--", bits);
+ prefix_base += d.vendorName() + "--" + d.name() + "--";
+ // sanitize chars
+ for (size_t i = 0; i < prefix_base.size(); i++)
{
- prefix_base[i] = '_';
+ char c = prefix_base[i];
+ if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' || c == '-'))
+ {
+ prefix_base[i] = '_';
+ }
}
}
}