1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-10 10:33:29 -05:00

SDRPlay V3 API - don't call close unless open was a success, as will crash on Mac,

This commit is contained in:
srcejon 2023-12-01 11:54:14 +00:00
parent e75900b666
commit cdb78c903f
2 changed files with 24 additions and 10 deletions

View File

@ -43,25 +43,38 @@ static constexpr const char* const m_hardwareID = "SDRplayV3";
static constexpr const char* const m_deviceTypeID = SDRPLAYV3_DEVICE_TYPE_ID; static constexpr const char* const m_deviceTypeID = SDRPLAYV3_DEVICE_TYPE_ID;
SDRPlayV3Plugin::SDRPlayV3Plugin(QObject* parent) : SDRPlayV3Plugin::SDRPlayV3Plugin(QObject* parent) :
QObject(parent) QObject(parent),
m_opened(false)
{ {
sdrplay_api_ErrT err; sdrplay_api_ErrT err;
float ver = 0.0f; float ver = 0.0f;
qDebug() << "SDRPlayV3Plugin: calling sdrplay_api_Open()"; if ((err = sdrplay_api_Open()) == sdrplay_api_Success)
if ((err = sdrplay_api_Open()) != sdrplay_api_Success) {
m_opened = true;
if ((err = sdrplay_api_ApiVersion(&ver)) == sdrplay_api_Success)
{
if (ver != SDRPLAY_API_VERSION) {
qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: SDRPlay API versions do not match " << ver << " " << SDRPLAY_API_VERSION;
}
}
else
{
qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: failed to get SDRPlay API version.";
}
}
else
{
qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: sdrplay_api_Open() was unsuccessful. " << sdrplay_api_GetErrorString(err); qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: sdrplay_api_Open() was unsuccessful. " << sdrplay_api_GetErrorString(err);
}
if ((err = sdrplay_api_ApiVersion(&ver)) != sdrplay_api_Success)
qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: failed to get SDRPlay API version.";
if (ver != SDRPLAY_API_VERSION)
qCritical() << "SDRPlayV3Plugin::SDRPlayV3Plugin: SDRPlay API versions do not match " << ver << " " << SDRPLAY_API_VERSION;
} }
SDRPlayV3Plugin::~SDRPlayV3Plugin() SDRPlayV3Plugin::~SDRPlayV3Plugin()
{ {
sdrplay_api_Close(); if (m_opened) {
sdrplay_api_Close();
}
} }
const PluginDescriptor& SDRPlayV3Plugin::getPluginDescriptor() const const PluginDescriptor& SDRPlayV3Plugin::getPluginDescriptor() const

View File

@ -52,6 +52,7 @@ public:
virtual DeviceWebAPIAdapter* createDeviceWebAPIAdapter() const; virtual DeviceWebAPIAdapter* createDeviceWebAPIAdapter() const;
private: private:
bool m_opened; // Whether sdrplay_api_Open was successful
static const PluginDescriptor m_pluginDescriptor; static const PluginDescriptor m_pluginDescriptor;
}; };