summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/WebCore/plugins/qt/PluginPackageQt.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/WebCore/plugins/qt/PluginPackageQt.cpp b/Source/WebCore/plugins/qt/PluginPackageQt.cpp
index a674ad39d..b86ab9f66 100644
--- a/Source/WebCore/plugins/qt/PluginPackageQt.cpp
+++ b/Source/WebCore/plugins/qt/PluginPackageQt.cpp
@@ -42,7 +42,11 @@ bool PluginPackage::fetchInfo()
if (isPluginBlacklisted())
return false;
m_module = new QLibrary((QString)m_path);
+#if QT_VERSION >= QT_VERSION_CHECK(5,5,0)
+ m_module->setLoadHints(QLibrary::ResolveAllSymbolsHint | QLibrary::DeepBindHint);
+#else
m_module->setLoadHints(QLibrary::ResolveAllSymbolsHint);
+#endif
if (!m_module->load()) {
LOG(Plugins, "%s not loaded (%s)", m_path.utf8().data(),
m_module->errorString().toLatin1().constData());
@@ -144,7 +148,8 @@ static void initializeGtk(QLibrary* module = 0)
bool PluginPackage::isPluginBlacklisted()
{
- // TODO: enumerate all plugins that are incompatible with Qt5.
+ // These plugins are incompatible because they themselves use dlopen on
+ // subplugins linked against Qt 4 but without using DEEPBIND.
const QLatin1String pluginBlacklist[] = {
QLatin1String("skypebuttons"),
QLatin1String("libkpartsplugin")
@@ -170,7 +175,11 @@ bool PluginPackage::load()
if (!m_module) {
m_module = new QLibrary((QString)m_path);
+#if QT_VERSION >= QT_VERSION_CHECK(5,5,0)
+ m_module->setLoadHints(QLibrary::ResolveAllSymbolsHint | QLibrary::DeepBindHint);
+#else
m_module->setLoadHints(QLibrary::ResolveAllSymbolsHint);
+#endif
if (!m_module->load()) {
LOG(Plugins, "%s not loaded (%s)", m_path.utf8().data(),
m_module->errorString().toLatin1().constData());