mirror of
https://invent.kde.org/network/krfb
synced 2024-07-01 07:24:29 +00:00
Clean up plugin loading code
- We do not need to manually check for duplicates - Improve the error message while at it - Remove the internal utility-method since the code is super small now
This commit is contained in:
parent
fcebbfb2d4
commit
d7c559b017
|
@ -42,50 +42,25 @@ Q_GLOBAL_STATIC(EventsManagerStatic, eventsManagerStatic)
|
||||||
|
|
||||||
EventsManager::EventsManager()
|
EventsManager::EventsManager()
|
||||||
{
|
{
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
loadPlugins();
|
|
||||||
}
|
|
||||||
|
|
||||||
EventsManager::~EventsManager()
|
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
}
|
|
||||||
|
|
||||||
EventsManager *EventsManager::instance()
|
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
return &eventsManagerStatic->instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventsManager::loadPlugins()
|
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/events"));
|
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/events"));
|
||||||
|
for (const KPluginMetaData &data : plugins) {
|
||||||
QVectorIterator<KPluginMetaData> i(plugins);
|
|
||||||
i.toBack();
|
|
||||||
QSet<QString> unique;
|
|
||||||
while (i.hasPrevious()) {
|
|
||||||
KPluginMetaData data = i.previous();
|
|
||||||
// only load plugins once, even if found multiple times!
|
|
||||||
if (unique.contains(data.name())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const KPluginFactory::Result<EventsPlugin> result = KPluginFactory::instantiatePlugin<EventsPlugin>(data);
|
const KPluginFactory::Result<EventsPlugin> result = KPluginFactory::instantiatePlugin<EventsPlugin>(data);
|
||||||
if (result.plugin) {
|
if (result.plugin) {
|
||||||
m_plugins.insert(data.pluginId(), result.plugin);
|
m_plugins.insert(data.pluginId(), result.plugin);
|
||||||
qCDebug(KRFB) << "Loaded plugin with name " << data.pluginId();
|
qCDebug(KRFB) << "Loaded plugin with name " << data.pluginId();
|
||||||
} else {
|
} else {
|
||||||
qCDebug(KRFB) << "unable to load plugin for " << data.fileName();
|
qCDebug(KRFB) << "unable to load plugin for " << data.fileName() << result.errorString;
|
||||||
}
|
}
|
||||||
unique.insert (data.name());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventsManager::~EventsManager() = default;
|
||||||
|
|
||||||
|
EventsManager *EventsManager::instance()
|
||||||
|
{
|
||||||
|
return &eventsManagerStatic->instance;
|
||||||
|
}
|
||||||
|
|
||||||
QSharedPointer<EventHandler> EventsManager::eventHandler()
|
QSharedPointer<EventHandler> EventsManager::eventHandler()
|
||||||
{
|
{
|
||||||
QMap<QString, EventsPlugin *>::const_iterator iter = m_plugins.constBegin();
|
QMap<QString, EventsPlugin *>::const_iterator iter = m_plugins.constBegin();
|
||||||
|
|
|
@ -52,8 +52,6 @@ private:
|
||||||
|
|
||||||
EventsManager();
|
EventsManager();
|
||||||
|
|
||||||
void loadPlugins();
|
|
||||||
|
|
||||||
QMap<QString, EventsPlugin *> m_plugins;
|
QMap<QString, EventsPlugin *> m_plugins;
|
||||||
QList<QWeakPointer<EventHandler> > m_eventHandlers;
|
QList<QWeakPointer<EventHandler> > m_eventHandlers;
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,52 +40,30 @@ public:
|
||||||
Q_GLOBAL_STATIC(FrameBufferManagerStatic, frameBufferManagerStatic)
|
Q_GLOBAL_STATIC(FrameBufferManagerStatic, frameBufferManagerStatic)
|
||||||
|
|
||||||
FrameBufferManager::FrameBufferManager()
|
FrameBufferManager::FrameBufferManager()
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
loadPlugins();
|
|
||||||
}
|
|
||||||
|
|
||||||
FrameBufferManager::~FrameBufferManager()
|
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
}
|
|
||||||
|
|
||||||
FrameBufferManager *FrameBufferManager::instance()
|
|
||||||
{
|
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
return &frameBufferManagerStatic->instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FrameBufferManager::loadPlugins()
|
|
||||||
{
|
{
|
||||||
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"));
|
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"));
|
||||||
|
for (const KPluginMetaData &data : plugins) {
|
||||||
QVectorIterator<KPluginMetaData> i(plugins);
|
|
||||||
i.toBack();
|
|
||||||
QSet<QString> unique;
|
|
||||||
while (i.hasPrevious()) {
|
|
||||||
const KPluginMetaData &data = i.previous();
|
|
||||||
// only load plugins once, even if found multiple times!
|
|
||||||
if (unique.contains(data.name()))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const KPluginFactory::Result<FrameBufferPlugin> result = KPluginFactory::instantiatePlugin<FrameBufferPlugin>(data);
|
const KPluginFactory::Result<FrameBufferPlugin> result = KPluginFactory::instantiatePlugin<FrameBufferPlugin>(data);
|
||||||
if (result.plugin) {
|
if (result.plugin) {
|
||||||
m_plugins.insert(data.pluginId(), result.plugin);
|
m_plugins.insert(data.pluginId(), result.plugin);
|
||||||
qCDebug(KRFB) << "Loaded plugin with name " << data.pluginId();
|
qCDebug(KRFB) << "Loaded plugin with name " << data.pluginId();
|
||||||
} else {
|
} else {
|
||||||
qCDebug(KRFB) << "unable to load plugin for " << data.fileName();
|
qCDebug(KRFB) << "unable to load plugin for " << data.fileName() << result.errorString;
|
||||||
}
|
}
|
||||||
unique.insert (data.name());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FrameBufferManager::~FrameBufferManager()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
FrameBufferManager *FrameBufferManager::instance()
|
||||||
|
{
|
||||||
|
return &frameBufferManagerStatic->instance;
|
||||||
|
}
|
||||||
|
|
||||||
QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVariantMap &args)
|
QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVariantMap &args)
|
||||||
{
|
{
|
||||||
//qDebug();
|
|
||||||
|
|
||||||
// See if there is still an existing framebuffer to this WId.
|
// See if there is still an existing framebuffer to this WId.
|
||||||
if (m_frameBuffers.contains(id)) {
|
if (m_frameBuffers.contains(id)) {
|
||||||
QWeakPointer<FrameBuffer> weakFrameBuffer = m_frameBuffers.value(id);
|
QWeakPointer<FrameBuffer> weakFrameBuffer = m_frameBuffers.value(id);
|
||||||
|
|
|
@ -52,8 +52,6 @@ private:
|
||||||
|
|
||||||
FrameBufferManager();
|
FrameBufferManager();
|
||||||
|
|
||||||
void loadPlugins();
|
|
||||||
|
|
||||||
QMap<QString, FrameBufferPlugin *> m_plugins;
|
QMap<QString, FrameBufferPlugin *> m_plugins;
|
||||||
QMap<WId, QWeakPointer<FrameBuffer> > m_frameBuffers;
|
QMap<WId, QWeakPointer<FrameBuffer> > m_frameBuffers;
|
||||||
};
|
};
|
||||||
|
|
|
@ -83,14 +83,8 @@ public:
|
||||||
|
|
||||||
void fillFrameBuffersCombo() {
|
void fillFrameBuffersCombo() {
|
||||||
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"));
|
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"));
|
||||||
QSet<QString> unique;
|
for (const KPluginMetaData &metadata : plugins) {
|
||||||
QVectorIterator<KPluginMetaData> i(plugins);
|
|
||||||
i.toBack();
|
|
||||||
while (i.hasPrevious()) {
|
|
||||||
const KPluginMetaData &metadata = i.previous();
|
|
||||||
if (unique.contains(metadata.pluginId())) continue;
|
|
||||||
cb_preferredFrameBufferPlugin->addItem(metadata.pluginId());
|
cb_preferredFrameBufferPlugin->addItem(metadata.pluginId());
|
||||||
unique.insert(metadata.pluginId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user