File indexing completed on 2024-04-28 04:58:58

0001 /* This file is part of the KDE project
0002    Copyright (C) 2018 Oleg Chernovskiy <kanedias@xaker.ru>
0003 
0004  This program is free software; you can redistribute it and/or
0005  modify it under the terms of the GNU General Public
0006  License as published by the Free Software Foundation; either
0007  version 3 of the License, or (at your option) any later version.
0008 
0009  This program is distributed in the hope that it will be useful,
0010  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012  General Public License for more details.
0013 
0014  You should have received a copy of the GNU General Public License
0015  along with this program; see the file COPYING.  If not, write to
0016  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  Boston, MA 02110-1301, USA.
0018 */
0019 
0020 
0021 #include "pw_framebufferplugin.h"
0022 #include "pw_framebuffer.h"
0023 #include <KPluginFactory>
0024 
0025 K_PLUGIN_CLASS_WITH_JSON(PWFrameBufferPlugin, "pipewire.json")
0026 
0027 PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &args)
0028     : FrameBufferPlugin(parent, args)
0029 {
0030 }
0031 
0032 
0033 FrameBuffer *PWFrameBufferPlugin::frameBuffer(const QVariantMap &args)
0034 {
0035     auto pwfb = new PWFrameBuffer;
0036     if (args.contains(QLatin1String("name"))) {
0037         pwfb->startVirtualMonitor(args[QStringLiteral("name")].toString(), args[QStringLiteral("resolution")].toSize(), args[QStringLiteral("scale")].toDouble());
0038     } else {
0039         // D-Bus is most important in XDG-Desktop-Portals init chain, no toys for us if something is wrong with XDP
0040         // PipeWire connectivity is initialized after D-Bus session is started
0041         pwfb->initDBus();
0042     }
0043 
0044     // sanity check for dbus/wayland/pipewire errors
0045     if (!pwfb->isValid()) {
0046         delete pwfb;
0047         return nullptr;
0048     }
0049 
0050     return pwfb;
0051 }
0052 
0053 #include "pw_framebufferplugin.moc"