Mercurial > hg > svcore
comparison plugin/LADSPAPluginFactory.cpp @ 106:45175d8c5dc5
* Fix failure to locate plugins by base name of .so file
author | Chris Cannam |
---|---|
date | Fri, 05 May 2006 14:04:43 +0000 |
parents | c983dda79f72 |
children | 4170b21773cf |
comparison
equal
deleted
inserted
replaced
105:ac89a106f155 | 106:45175d8c5dc5 |
---|---|
408 | 408 |
409 void | 409 void |
410 LADSPAPluginFactory::loadLibrary(QString soName) | 410 LADSPAPluginFactory::loadLibrary(QString soName) |
411 { | 411 { |
412 void *libraryHandle = DLOPEN(soName, RTLD_NOW); | 412 void *libraryHandle = DLOPEN(soName, RTLD_NOW); |
413 if (libraryHandle) m_libraryHandles[soName] = libraryHandle; | 413 if (libraryHandle) { |
414 m_libraryHandles[soName] = libraryHandle; | |
415 std::cerr << "LADSPAPluginFactory::loadLibrary: Loaded library \"" << soName.toStdString() << "\"" << std::endl; | |
416 return; | |
417 } | |
418 | |
419 if (QFileInfo(soName).exists()) { | |
420 DLERROR(); | |
421 std::cerr << "LADSPAPluginFactory::loadLibrary: Library \"" << soName.toStdString() << "\" exists, but failed to load it" << std::endl; | |
422 return; | |
423 } | |
424 | |
425 std::vector<QString> pathList = getPluginPath(); | |
426 | |
427 QString fileName = QFile(soName).fileName(); | |
428 QString base = QFileInfo(soName).baseName(); | |
429 | |
430 for (std::vector<QString>::iterator i = pathList.begin(); | |
431 i != pathList.end(); ++i) { | |
432 | |
433 std::cerr << "Looking at: " << (*i).toStdString() << std::endl; | |
434 | |
435 QDir dir(*i, PLUGIN_GLOB, | |
436 QDir::Name | QDir::IgnoreCase, | |
437 QDir::Files | QDir::Readable); | |
438 | |
439 if (QFileInfo(dir.filePath(fileName)).exists()) { | |
440 std::cerr << "Loading: " << fileName.toStdString() << std::endl; | |
441 libraryHandle = DLOPEN(dir.filePath(fileName), RTLD_NOW); | |
442 if (libraryHandle) m_libraryHandles[soName] = libraryHandle; | |
443 return; | |
444 } | |
445 | |
446 for (unsigned int j = 0; j < dir.count(); ++j) { | |
447 QString file = dir.filePath(dir[j]); | |
448 if (QFileInfo(file).baseName() == base) { | |
449 std::cerr << "Loading: " << file.toStdString() << std::endl; | |
450 libraryHandle = DLOPEN(file, RTLD_NOW); | |
451 if (libraryHandle) m_libraryHandles[soName] = libraryHandle; | |
452 return; | |
453 } | |
454 } | |
455 } | |
456 | |
457 std::cerr << "LADSPAPluginFactory::loadLibrary: Failed to locate plugin library \"" << soName.toStdString() << "\"" << std::endl; | |
414 } | 458 } |
415 | 459 |
416 void | 460 void |
417 LADSPAPluginFactory::unloadLibrary(QString soName) | 461 LADSPAPluginFactory::unloadLibrary(QString soName) |
418 { | 462 { |