diff --git a/framebuffers/pipewire/pipewire.json b/framebuffers/pipewire/pipewire.json new file mode 100644 index 0000000..60be08a --- /dev/null +++ b/framebuffers/pipewire/pipewire.json @@ -0,0 +1,5 @@ +{ + "X-KDE-OnlyShowOnQtPlatforms": [ + "wayland" + ] +} diff --git a/framebuffers/pipewire/pw_framebufferplugin.cpp b/framebuffers/pipewire/pw_framebufferplugin.cpp index 24bafc9..7ece039 100644 --- a/framebuffers/pipewire/pw_framebufferplugin.cpp +++ b/framebuffers/pipewire/pw_framebufferplugin.cpp @@ -22,7 +22,7 @@ #include "pw_framebuffer.h" #include -K_PLUGIN_CLASS(PWFrameBufferPlugin) +K_PLUGIN_CLASS_WITH_JSON(PWFrameBufferPlugin, "pipewire.json") PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &args) : FrameBufferPlugin(parent, args) diff --git a/framebuffers/qt/qt.json b/framebuffers/qt/qt.json new file mode 100644 index 0000000..2463513 --- /dev/null +++ b/framebuffers/qt/qt.json @@ -0,0 +1,6 @@ +{ + "X-KDE-OnlyShowOnQtPlatforms": [ + "xcb" + ] +} + diff --git a/framebuffers/qt/qtframebufferplugin.cpp b/framebuffers/qt/qtframebufferplugin.cpp index 10ed078..d5700de 100644 --- a/framebuffers/qt/qtframebufferplugin.cpp +++ b/framebuffers/qt/qtframebufferplugin.cpp @@ -24,7 +24,7 @@ #include -K_PLUGIN_CLASS(QtFrameBufferPlugin) +K_PLUGIN_CLASS_WITH_JSON(QtFrameBufferPlugin, "qt.json") QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &args) : FrameBufferPlugin(parent, args) diff --git a/framebuffers/xcb/xcb.json b/framebuffers/xcb/xcb.json new file mode 100644 index 0000000..2463513 --- /dev/null +++ b/framebuffers/xcb/xcb.json @@ -0,0 +1,6 @@ +{ + "X-KDE-OnlyShowOnQtPlatforms": [ + "xcb" + ] +} + diff --git a/framebuffers/xcb/xcb_framebufferplugin.cpp b/framebuffers/xcb/xcb_framebufferplugin.cpp index 94f66c3..75d1dd9 100644 --- a/framebuffers/xcb/xcb_framebufferplugin.cpp +++ b/framebuffers/xcb/xcb_framebufferplugin.cpp @@ -22,7 +22,7 @@ #include "xcb_framebuffer.h" #include -K_PLUGIN_CLASS(XCBFrameBufferPlugin) +K_PLUGIN_CLASS_WITH_JSON(XCBFrameBufferPlugin, "xcb.json") XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &args) : FrameBufferPlugin(parent, args) diff --git a/krfb/framebuffermanager.cpp b/krfb/framebuffermanager.cpp index f5a16d9..9195d42 100644 --- a/krfb/framebuffermanager.cpp +++ b/krfb/framebuffermanager.cpp @@ -24,6 +24,7 @@ #include "krfbconfig.h" #include "krfbdebug.h" +#include #include #include @@ -40,7 +41,10 @@ Q_GLOBAL_STATIC(FrameBufferManagerStatic, frameBufferManagerStatic) FrameBufferManager::FrameBufferManager() { - const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), {}, KPluginMetaData::AllowEmptyMetaData); + const auto platformFilter = [] (const KPluginMetaData &pluginData) { + return pluginData.value(QStringLiteral("X-KDE-OnlyShowOnQtPlatforms"), QStringList()).contains(QGuiApplication::platformName()); + }; + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), platformFilter, KPluginMetaData::AllowEmptyMetaData); for (const KPluginMetaData &data : plugins) { const KPluginFactory::Result result = KPluginFactory::instantiatePlugin(data); if (result.plugin) { @@ -76,7 +80,7 @@ QSharedPointer FrameBufferManager::frameBuffer(WId id, const QVaria } } - if (auto preferredPlugin = m_plugins[ KrfbConfig::preferredFrameBufferPlugin() ]) { + if (auto preferredPlugin = m_plugins.value(KrfbConfig::preferredFrameBufferPlugin())) { if (auto frameBuffer = QSharedPointer(preferredPlugin->frameBuffer(args))) { qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin(); m_frameBuffers.insert(id, frameBuffer.toWeakRef());