MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / loadPlugin

Method loadPlugin

src/framework/lifecycle/private/pluginmanager_p.cpp:110–149  ·  view source on GitHub ↗

! * \brief 加载一个插件,线程安全,可单独使用 * \param pluginMetaObj */

Source from the content-addressed store, hash-verified

108 * \param pluginMetaObj
109 */
110bool PluginManagerPrivate::loadPlugin(PluginMetaObjectPointer &pluginMetaObj)
111{
112 dpfCheckTimeBegin();
113 // don't load disabled plugins
114 if (!pluginMetaObj->isEnabledBySettings())
115 return true;
116
117 QMutexLocker lock(&GlobalPrivate::mutex);
118
119 //流程互斥
120 if (pluginMetaObj->d->state >= PluginMetaObject::State::Loaded) {
121 dpfDebug() << "Plugin"
122 << pluginMetaObj->d->name
123 << "already loaded and state: "
124 << pluginMetaObj->d->state;
125 return true;
126 }
127
128 if (pluginMetaObj.isNull()) {
129 dpfCritical() << "Failed, load plugin is nullptr";
130 return false;
131 }
132
133 bool result = pluginMetaObj->d->loader->load();
134 pluginMetaObj->d->plugin = QSharedPointer<Plugin>(
135 qobject_cast<Plugin*>(pluginMetaObj->d->loader->instance()));
136 if (!pluginMetaObj->d->plugin.isNull()) {
137 pluginMetaObj->d->state = PluginMetaObject::State::Loaded;
138 dpfDebug() << "Loaded plugin: " << pluginMetaObj->d->name;
139 } else {
140 pluginMetaObj->d->error = "Failed, get plugin instance is nullptr: "
141 + pluginMetaObj->d->loader->errorString();
142 dpfCritical() << pluginMetaObj->d->error;
143 result = false;
144 }
145
146 dpfCheckTimeEnd();
147
148 return result;
149}
150
151/*!
152 * \brief 初始化一个插件,线程安全,可单独使用

Callers

nothing calls this directly

Calls 5

isEnabledBySettingsMethod · 0.80
isNullMethod · 0.45
loadMethod · 0.45
instanceMethod · 0.45
errorStringMethod · 0.45

Tested by

no test coverage detected