diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -482,6 +482,7 @@ libinput/events.cpp libinput/libinput_logging.cpp udev.cpp + xwl/xwayland_iface.cpp ) include(ECMQtDeclareLoggingCategory) diff --git a/xwl/xwayland.h b/xwl/xwayland.h --- a/xwl/xwayland.h +++ b/xwl/xwayland.h @@ -20,7 +20,7 @@ #ifndef KWIN_XWL_XWAYLAND #define KWIN_XWL_XWAYLAND -#include +#include "xwayland_iface.h" #include @@ -36,7 +36,7 @@ { class DataBridge; -class Xwayland : public QObject +class Xwayland : public XwaylandIface { Q_OBJECT public: diff --git a/xwl/xwayland.cpp b/xwl/xwayland.cpp --- a/xwl/xwayland.cpp +++ b/xwl/xwayland.cpp @@ -78,7 +78,7 @@ } Xwayland::Xwayland(ApplicationWaylandAbstract *app, QObject *parent) - : QObject(parent), + : XwaylandIface(parent), m_app(app) { s_self = this; diff --git a/xwl/xwayland_iface.h b/xwl/xwayland_iface.h new file mode 100644 --- /dev/null +++ b/xwl/xwayland_iface.h @@ -0,0 +1,48 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright 2018 Roman Gilg + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +#ifndef KWIN_XWL_XWAYLAND_IFACE +#define KWIN_XWL_XWAYLAND_IFACE + +#include + +#include + +namespace KWin +{ + +class KWIN_EXPORT XwaylandIface : public QObject +{ + Q_OBJECT +public: + static XwaylandIface *self(); + +protected: + explicit XwaylandIface(QObject *parent = nullptr); + virtual ~XwaylandIface(); +}; + +inline +XwaylandIface *xwayland() { + return XwaylandIface::self(); +} + +} + +#endif diff --git a/xwl/xwayland_iface.cpp b/xwl/xwayland_iface.cpp new file mode 100644 --- /dev/null +++ b/xwl/xwayland_iface.cpp @@ -0,0 +1,41 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright 2018 Roman Gilg + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +#include "xwayland_iface.h" + +namespace KWin { + +XwaylandIface *s_self = nullptr; + +XwaylandIface *XwaylandIface::self() { + return s_self; +} + +XwaylandIface::XwaylandIface(QObject *parent) + : QObject(parent) +{ + s_self = this; +} + +XwaylandIface::~XwaylandIface() +{ + s_self = nullptr; +} + +}