1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-01 13:47:01 -04:00

Deep redesign: fixed RTLSDR input plugin

This commit is contained in:
f4exb
2015-08-26 02:03:20 +02:00
parent a68104ab65
commit 5a0668f9ec
12 changed files with 102 additions and 46 deletions
+31 -12
View File
@@ -28,13 +28,16 @@ PluginManager::~PluginManager()
void PluginManager::loadPlugins()
{
qDebug() << "PluginManager::loadPlugins: " << qPrintable(QApplication::instance()->applicationDirPath());
QDir pluginsDir = QDir(QApplication::instance()->applicationDirPath());
loadPlugins(pluginsDir);
qSort(m_plugins);
for(Plugins::const_iterator it = m_plugins.begin(); it != m_plugins.end(); ++it) {
for (Plugins::const_iterator it = m_plugins.begin(); it != m_plugins.end(); ++it)
{
it->plugin->initPlugin(&m_pluginAPI);
}
@@ -321,22 +324,38 @@ void PluginManager::loadPlugins(const QDir& dir)
foreach (QString fileName, pluginsDir.entryList(QDir::Files))
{
QPluginLoader* loader = new QPluginLoader(pluginsDir.absoluteFilePath(fileName));
PluginInterface* plugin = qobject_cast<PluginInterface*>(loader->instance());
if (fileName.endsWith(".so"))
{
qDebug() << "PluginManager::loadPlugins: fileName: " << qPrintable(fileName);
if (loader->isLoaded()) {
qWarning("loaded plugin %s", qPrintable(fileName));
}
QPluginLoader* loader = new QPluginLoader(pluginsDir.absoluteFilePath(fileName));
PluginInterface* plugin = qobject_cast<PluginInterface*>(loader->instance());
if (plugin != NULL) {
m_plugins.append(Plugin(fileName, loader, plugin));
} else {
loader->unload();
delete loader;
if (loader->isLoaded())
{
qWarning("PluginManager::loadPlugins: loaded plugin %s", qPrintable(fileName));
}
else
{
qWarning() << "PluginManager::loadPlugins: " << qPrintable(loader->errorString());
}
if (plugin != 0)
{
m_plugins.append(Plugin(fileName, loader, plugin));
}
else
{
loader->unload();
delete loader;
}
}
}
foreach (QString dirName, pluginsDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
// recursive calls on subdirectories
foreach (QString dirName, pluginsDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
loadPlugins(pluginsDir.absoluteFilePath(dirName));
}
}