Merge pull request #2492 from KonstantinMatskevich:ocl_fix_wrongdevice

This commit is contained in:
Andrey Pavlenko 2014-03-20 13:39:16 +04:00 committed by OpenCV Buildbot
commit 87ae0f9990
2 changed files with 4 additions and 3 deletions

View File

@ -1410,7 +1410,7 @@ bool useOpenCL()
{
CoreTLSData* data = coreTlsData.get();
if( data->useOpenCL < 0 )
data->useOpenCL = (int)haveOpenCL();
data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() != NULL;
return data->useOpenCL > 0;
}
@ -1419,7 +1419,7 @@ void setUseOpenCL(bool flag)
if( haveOpenCL() )
{
CoreTLSData* data = coreTlsData.get();
data->useOpenCL = flag ? 1 : 0;
data->useOpenCL = (flag && Device::getDefault().ptr() != NULL) ? 1 : 0;
}
}
@ -2245,6 +2245,7 @@ not_found:
std::cerr << deviceTypes[t] << " ";
std::cerr << std::endl << " Device name: " << (deviceName.length() == 0 ? "any" : deviceName) << std::endl;
CV_Error(CL_INVALID_DEVICE, "Requested OpenCL device is not found");
return NULL;
}

View File

@ -88,7 +88,7 @@ void UMatData::unlock()
MatAllocator* UMat::getStdAllocator()
{
if( ocl::haveOpenCL() )
if( ocl::haveOpenCL() && ocl::useOpenCL() )
return ocl::getOpenCLAllocator();
return Mat::getStdAllocator();
}