diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -493,6 +493,7 @@ libinput/libinput_logging.cpp udev.cpp touch_hide_cursor_spy.cpp + xwl/xwayland_interface.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_interface.h" #include @@ -36,7 +36,7 @@ { class DataBridge; -class Xwayland : public QObject +class Xwayland : public XwaylandInterface { 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), + : XwaylandInterface(parent), m_app(app) { s_self = this; diff --git a/xwl/xwayland_interface.h b/xwl/xwayland_interface.h new file mode 100644 --- /dev/null +++ b/xwl/xwayland_interface.h @@ -0,0 +1,47 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright 2019 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_INTERFACE +#define KWIN_XWL_XWAYLAND_INTERFACE + +#include + +#include + +namespace KWin +{ + +class KWIN_EXPORT XwaylandInterface : public QObject +{ + Q_OBJECT +public: + static XwaylandInterface *self(); + +protected: + explicit XwaylandInterface(QObject *parent = nullptr); + virtual ~XwaylandInterface(); +}; + +inline XwaylandInterface *xwayland() { + return XwaylandInterface::self(); +} + +} + +#endif diff --git a/xwl/xwayland_interface.cpp b/xwl/xwayland_interface.cpp new file mode 100644 --- /dev/null +++ b/xwl/xwayland_interface.cpp @@ -0,0 +1,43 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright 2019 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_interface.h" + +namespace KWin +{ + +XwaylandInterface *s_self = nullptr; + +XwaylandInterface *XwaylandInterface::self() +{ + return s_self; +} + +XwaylandInterface::XwaylandInterface(QObject *parent) + : QObject(parent) +{ + s_self = this; +} + +XwaylandInterface::~XwaylandInterface() +{ + s_self = nullptr; +} + +}