Skip to content

Commit

Permalink
[opencl] Remove all static members
Browse files Browse the repository at this point in the history
and rely on the default() mechanism, this prevents
random crashes on exit when dtor is called on the
statics.
  • Loading branch information
elpaso committed Dec 3, 2018
1 parent dcba255 commit 868b04d
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 11 deletions.
15 changes: 6 additions & 9 deletions src/core/qgsopenclutils.cpp
Expand Up @@ -27,8 +27,6 @@ QLatin1String QgsOpenClUtils::SETTINGS_GLOBAL_ENABLED_KEY = QLatin1Literal( "Ope
QLatin1String QgsOpenClUtils::SETTINGS_DEFAULT_DEVICE_KEY = QLatin1Literal( "OpenClDefaultDevice" );
QLatin1String QgsOpenClUtils::LOGMESSAGE_TAG = QLatin1Literal( "OpenCL" );
bool QgsOpenClUtils::sAvailable = false;
cl::Platform QgsOpenClUtils::sDefaultPlatform = cl::Platform();
cl::Device QgsOpenClUtils::sActiveDevice = cl::Device();
QString QgsOpenClUtils::sSourcePath = QString();


Expand Down Expand Up @@ -163,15 +161,15 @@ bool QgsOpenClUtils::enabled()

cl::Device QgsOpenClUtils::activeDevice()
{
return sActiveDevice;
return cl::Device::getDefault();
}

QString QgsOpenClUtils::activePlatformVersion()
{
QString version;
if ( QgsOpenClUtils::sDefaultPlatform() )
if ( cl::Platform::getDefault()() )
{
std::string platver = QgsOpenClUtils::sDefaultPlatform.getInfo<CL_PLATFORM_VERSION>();
std::string platver = cl::Platform::getDefault().getInfo<CL_PLATFORM_VERSION>();
if ( platver.find( "OpenCL " ) != std::string::npos )
{
version = QString::fromStdString( platver.substr( 7 ) ).split( ' ' ).first();
Expand Down Expand Up @@ -203,6 +201,7 @@ bool QgsOpenClUtils::activate( const QString &preferredDeviceId )
{
if ( deviceId( activeDevice() ) == preferredDeviceId )
{
sAvailable = true;
return false;
}
try
Expand Down Expand Up @@ -306,8 +305,6 @@ bool QgsOpenClUtils::activate( const QString &preferredDeviceId )
.arg( QString::fromStdString( dev.getInfo<CL_DEVICE_NAME>() ) ),
LOGMESSAGE_TAG, Qgis::Success );
sAvailable = true;
sActiveDevice = dev;
sDefaultPlatform = plat;
}
}
}
Expand Down Expand Up @@ -526,9 +523,9 @@ cl::Context QgsOpenClUtils::context()
static std::once_flag contextCreated;
std::call_once( contextCreated, [ = ]()
{
if ( available() && sDefaultPlatform() && sActiveDevice() )
if ( available() && cl::Platform::getDefault()() && cl::Device::getDefault()() )
{
context = cl::Context( sActiveDevice );
context = cl::Context( cl::Device::getDefault() );
}
} );
return context;
Expand Down
2 changes: 0 additions & 2 deletions src/core/qgsopenclutils.h
Expand Up @@ -310,8 +310,6 @@ class CORE_EXPORT QgsOpenClUtils
static void init();

static bool sAvailable;
static cl::Device sActiveDevice;
static cl::Platform sDefaultPlatform;
static QLatin1String SETTINGS_GLOBAL_ENABLED_KEY;
static QLatin1String SETTINGS_DEFAULT_DEVICE_KEY;
static QString sSourcePath;
Expand Down

0 comments on commit 868b04d

Please sign in to comment.