From f8b9ea56807a0a35360b557d00b548f4ec5838dd Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Fri, 4 Sep 2020 17:45:47 +0300 Subject: [PATCH] Rename screencast wrappers according to unstable protocol naming conventions Since the screencast protocol is unstable, the ScreencastInterface class and the ScreencastStreamInterface class must carry version info in their class names. --- src/wayland/CMakeLists.txt | 4 +- src/wayland/autotests/server/CMakeLists.txt | 10 +-- .../autotests/server/test_screencast.cpp | 48 +++++++------ src/wayland/display.cpp | 6 +- src/wayland/display.h | 4 +- ...erface.cpp => screencast_v1_interface.cpp} | 51 +++++++------- src/wayland/screencast_v1_interface.h | 66 ++++++++++++++++++ src/wayland/server/screencast_interface.h | 67 ------------------- 8 files changed, 131 insertions(+), 125 deletions(-) rename src/wayland/{server/screencast_interface.cpp => screencast_v1_interface.cpp} (52%) create mode 100644 src/wayland/screencast_v1_interface.h delete mode 100644 src/wayland/server/screencast_interface.h diff --git a/src/wayland/CMakeLists.txt b/src/wayland/CMakeLists.txt index cc9060bf16..cb45ea960d 100644 --- a/src/wayland/CMakeLists.txt +++ b/src/wayland/CMakeLists.txt @@ -49,6 +49,7 @@ set(SERVER_LIB_SRCS relativepointer_interface.cpp relativepointer_interface_v1.cpp resource.cpp + screencast_v1_interface.cpp seat_interface.cpp server_decoration_interface.cpp server_decoration_palette_interface.cpp @@ -67,7 +68,6 @@ set(SERVER_LIB_SRCS xdgforeign_v2_interface.cpp xdgoutput_v1_interface.cpp xdgshell_interface.cpp - screencast_interface.cpp ) ecm_qt_declare_logging_category(SERVER_LIB_SRCS @@ -417,7 +417,7 @@ set(SERVER_LIB_HEADERS region_interface.h relativepointer_interface.h resource.h - screencast_interface.h + screencast_v1_interface.h seat_interface.h server_decoration_interface.h server_decoration_palette_interface.h diff --git a/src/wayland/autotests/server/CMakeLists.txt b/src/wayland/autotests/server/CMakeLists.txt index 01e1f858ce..a179f18358 100644 --- a/src/wayland/autotests/server/CMakeLists.txt +++ b/src/wayland/autotests/server/CMakeLists.txt @@ -77,16 +77,16 @@ add_test(NAME kwayland-testViewporterInterface COMMAND testViewporterInterface) ecm_mark_as_test(testViewporterInterface) ######################################################## -# Test ScreencastInterface +# Test ScreencastV1Interface ######################################################## ecm_add_qtwayland_client_protocol(SCREENCAST_SRCS PROTOCOL PROTOCOL ${PLASMA_WAYLAND_PROTOCOLS_DIR}/screencast.xml BASENAME zkde-screencast-unstable-v1 ) -add_executable(testScreencastInterface test_screencast.cpp ${SCREENCAST_SRCS}) -target_link_libraries(testScreencastInterface Qt5::Test Plasma::KWaylandServer Wayland::Client KF5::WaylandClient) -add_test(NAME kwayland-testScreencastInterface COMMAND testScreencastInterface) -ecm_mark_as_test(testScreencastInterface) +add_executable(testScreencastV1Interface test_screencast.cpp ${SCREENCAST_SRCS}) +target_link_libraries(testScreencastV1Interface Qt5::Test Plasma::KWaylandServer Wayland::Client KF5::WaylandClient) +add_test(NAME kwayland-testScreencastV1Interface COMMAND testScreencastV1Interface) +ecm_mark_as_test(testScreencastV1Interface) ######################################################## # Test InputMethod Interface diff --git a/src/wayland/autotests/server/test_screencast.cpp b/src/wayland/autotests/server/test_screencast.cpp index fdffa41b35..0291118962 100644 --- a/src/wayland/autotests/server/test_screencast.cpp +++ b/src/wayland/autotests/server/test_screencast.cpp @@ -15,7 +15,7 @@ #include "../../src/server/compositor_interface.h" #include "../../src/server/display.h" #include "../../src/server/seat_interface.h" -#include "../../src/server/screencast_interface.h" +#include "../../src/server/screencast_v1_interface.h" #include #include @@ -25,11 +25,12 @@ #include "qwayland-zkde-screencast-unstable-v1.h" -class ScreencastStream : public QObject, public QtWayland::zkde_screencast_stream_unstable_v1 +class ScreencastStreamV1 : public QObject, public QtWayland::zkde_screencast_stream_unstable_v1 { Q_OBJECT + public: - ScreencastStream(::zkde_screencast_stream_unstable_v1 *obj, QObject *parent) + ScreencastStreamV1(::zkde_screencast_stream_unstable_v1 *obj, QObject *parent) : QObject(parent) , zkde_screencast_stream_unstable_v1(obj) { @@ -43,29 +44,32 @@ public: Q_SIGNALS: void created(quint32 node); }; -class Screencast : public QObject, public QtWayland::zkde_screencast_unstable_v1 + +class ScreencastV1 : public QObject, public QtWayland::zkde_screencast_unstable_v1 { Q_OBJECT + public: - Screencast(QObject* parent) + ScreencastV1(QObject *parent) : QObject(parent) { } - ScreencastStream* createWindowStream(const QString &uuid) { - return new ScreencastStream(stream_window(uuid, 2), this); + ScreencastStreamV1 *createWindowStream(const QString &uuid) { + return new ScreencastStreamV1(stream_window(uuid, 2), this); } }; -class TestScreencastInterface : public QObject +class TestScreencastV1Interface : public QObject { Q_OBJECT + public: - TestScreencastInterface() + TestScreencastV1Interface() { } - ~TestScreencastInterface() override; + ~TestScreencastV1Interface() override; private Q_SLOTS: void initTestCase(); @@ -74,18 +78,18 @@ private Q_SLOTS: private: KWayland::Client::ConnectionThread *m_connection; KWayland::Client::EventQueue *m_queue = nullptr; - Screencast *m_screencast = nullptr; + ScreencastV1 *m_screencast = nullptr; - KWaylandServer::ScreencastInterface *m_screencastInterface = nullptr; + KWaylandServer::ScreencastV1Interface *m_screencastInterface = nullptr; - QPointer m_triggered = nullptr; + QPointer m_triggered = nullptr; QThread *m_thread; KWaylandServer::Display *m_display = nullptr; }; static const QString s_socketName = QStringLiteral("kwin-wayland-server-screencast-test-0"); -void TestScreencastInterface::initTestCase() +void TestScreencastV1Interface::initTestCase() { delete m_display; m_display = new KWaylandServer::Display(this); @@ -115,8 +119,8 @@ void TestScreencastInterface::initTestCase() QSignalSpy screencastSpy(®istry, &KWayland::Client::Registry::interfacesAnnounced); QVERIFY(screencastSpy.isValid()); - m_screencastInterface = m_display->createScreencastInterface(this); - connect(m_screencastInterface, &KWaylandServer::ScreencastInterface::windowScreencastRequested, this, [this] (KWaylandServer::ScreencastStreamInterface* stream, const QString &winid) { + m_screencastInterface = m_display->createScreencastV1Interface(this); + connect(m_screencastInterface, &KWaylandServer::ScreencastV1Interface::windowScreencastRequested, this, [this] (KWaylandServer::ScreencastStreamV1Interface *stream, const QString &winid) { Q_UNUSED(winid); stream->sendCreated(123); m_triggered = stream; @@ -126,7 +130,7 @@ void TestScreencastInterface::initTestCase() if (interfaceName != "zkde_screencast_unstable_v1") return; Q_ASSERT(version == 1); - m_screencast = new Screencast(this); + m_screencast = new ScreencastV1(this); m_screencast->init(&*registry, name, version); }); registry.setEventQueue(m_queue); @@ -140,7 +144,7 @@ void TestScreencastInterface::initTestCase() QVERIFY(m_screencast); } -TestScreencastInterface::~TestScreencastInterface() +TestScreencastV1Interface::~TestScreencastV1Interface() { delete m_queue; m_queue = nullptr; @@ -157,20 +161,20 @@ TestScreencastInterface::~TestScreencastInterface() delete m_display; } -void TestScreencastInterface::testCreate() +void TestScreencastV1Interface::testCreate() { auto stream = m_screencast->createWindowStream("3"); QVERIFY(stream); - QSignalSpy spyWorking(stream, &ScreencastStream::created); + QSignalSpy spyWorking(stream, &ScreencastStreamV1::created); QVERIFY(spyWorking.count() || spyWorking.wait()); QVERIFY(m_triggered); - QSignalSpy spyStop(m_triggered, &KWaylandServer::ScreencastStreamInterface::finished); + QSignalSpy spyStop(m_triggered, &KWaylandServer::ScreencastStreamV1Interface::finished); stream->close(); QVERIFY(spyStop.count() || spyStop.wait()); } -QTEST_GUILESS_MAIN(TestScreencastInterface) +QTEST_GUILESS_MAIN(TestScreencastV1Interface) #include "test_screencast.moc" diff --git a/src/wayland/display.cpp b/src/wayland/display.cpp index 6fc0d55638..0ba76744dd 100644 --- a/src/wayland/display.cpp +++ b/src/wayland/display.cpp @@ -33,7 +33,7 @@ #include "primaryselectiondevicemanager_v1_interface.h" #include "relativepointer_interface_p.h" #include "seat_interface.h" -#include "screencast_interface.h" +#include "screencast_v1_interface.h" #include "server_decoration_interface.h" #include "server_decoration_palette_interface.h" #include "shadow_interface.h" @@ -336,9 +336,9 @@ ServerSideDecorationManagerInterface *Display::createServerSideDecorationManager return d; } -ScreencastInterface *Display::createScreencastInterface(QObject *parent) +ScreencastV1Interface *Display::createScreencastV1Interface(QObject *parent) { - auto s = new ScreencastInterface(this, parent); + auto s = new ScreencastV1Interface(this, parent); connect(this, &Display::aboutToTerminate, s, [s] { delete s; }); return s; } diff --git a/src/wayland/display.h b/src/wayland/display.h index 74a74ac652..bacdf06691 100644 --- a/src/wayland/display.h +++ b/src/wayland/display.h @@ -77,7 +77,7 @@ class DataControlDeviceManagerV1Interface; class PrimarySelectionDeviceManagerV1Interface; class KeyboardShortcutsInhibitManagerV1Interface; class ViewporterInterface; -class ScreencastInterface; +class ScreencastV1Interface; class InputMethodV1Interface; class InputPanelV1Interface; class LayerShellV1Interface; @@ -338,7 +338,7 @@ public: /** * Creates an interface to request video feeds of different compositor resources */ - ScreencastInterface *createScreencastInterface(QObject *parent = nullptr); + ScreencastV1Interface *createScreencastV1Interface(QObject *parent = nullptr); /** * Creates the layer shell compositor extension. diff --git a/src/wayland/server/screencast_interface.cpp b/src/wayland/screencast_v1_interface.cpp similarity index 52% rename from src/wayland/server/screencast_interface.cpp rename to src/wayland/screencast_v1_interface.cpp index f30ac5a6f7..e8d0724a32 100644 --- a/src/wayland/server/screencast_interface.cpp +++ b/src/wayland/screencast_v1_interface.cpp @@ -4,7 +4,7 @@ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ -#include "screencast_interface.h" +#include "screencast_v1_interface.h" #include "display.h" #include "output_interface.h" @@ -12,14 +12,15 @@ #include "qwayland-server-zkde-screencast-unstable-v1.h" -using namespace KWaylandServer; +namespace KWaylandServer +{ static int s_version = 1; -class KWaylandServer::ScreencastStreamInterfacePrivate : public QtWaylandServer::zkde_screencast_stream_unstable_v1 +class ScreencastStreamV1InterfacePrivate : public QtWaylandServer::zkde_screencast_stream_unstable_v1 { public: - ScreencastStreamInterfacePrivate(ScreencastStreamInterface *q) + ScreencastStreamV1InterfacePrivate(ScreencastStreamV1Interface *q) : q(q) {} @@ -32,8 +33,8 @@ public: q->deleteLater(); } - - void zkde_screencast_stream_unstable_v1_close(Resource * resource) override + + void zkde_screencast_stream_unstable_v1_close(Resource *resource) override { Q_UNUSED(resource); Q_EMIT q->finished(); @@ -42,72 +43,74 @@ public: } bool stopped = false; - ScreencastStreamInterface *const q; + ScreencastStreamV1Interface *const q; }; -ScreencastStreamInterface::ScreencastStreamInterface(QObject* parent) +ScreencastStreamV1Interface::ScreencastStreamV1Interface(QObject *parent) : QObject(parent) - , d(new ScreencastStreamInterfacePrivate(this)) + , d(new ScreencastStreamV1InterfacePrivate(this)) { } -ScreencastStreamInterface::~ScreencastStreamInterface() = default; +ScreencastStreamV1Interface::~ScreencastStreamV1Interface() = default; -void ScreencastStreamInterface::sendCreated(quint32 nodeid) +void ScreencastStreamV1Interface::sendCreated(quint32 nodeid) { d->send_created(nodeid); } -void ScreencastStreamInterface::sendFailed(const QString& error) +void ScreencastStreamV1Interface::sendFailed(const QString &error) { d->send_failed(error); } -void ScreencastStreamInterface::sendClosed() +void ScreencastStreamV1Interface::sendClosed() { if (!d->stopped) { d->send_closed(); } } -class KWaylandServer::ScreencastInterfacePrivate : public QtWaylandServer::zkde_screencast_unstable_v1 +class ScreencastV1InterfacePrivate : public QtWaylandServer::zkde_screencast_unstable_v1 { public: - ScreencastInterfacePrivate(Display *display, ScreencastInterface* q) + ScreencastV1InterfacePrivate(Display *display, ScreencastV1Interface *q) : QtWaylandServer::zkde_screencast_unstable_v1(*display, s_version) , q(q) { } - ScreencastStreamInterface *createStream(Resource *resource, quint32 streamid) const + ScreencastStreamV1Interface *createStream(Resource *resource, quint32 streamid) const { - auto stream = new ScreencastStreamInterface(q); + auto stream = new ScreencastStreamV1Interface(q); stream->d->init(resource->client(), streamid, resource->version()); return stream; } void zkde_screencast_unstable_v1_stream_output(Resource *resource, uint32_t streamid, struct ::wl_resource *output, uint32_t pointer) override { - Q_EMIT q->outputScreencastRequested(createStream(resource, streamid), OutputInterface::get(output), ScreencastInterface::CursorMode(pointer)); + Q_EMIT q->outputScreencastRequested(createStream(resource, streamid), OutputInterface::get(output), ScreencastV1Interface::CursorMode(pointer)); } void zkde_screencast_unstable_v1_stream_window(Resource *resource, uint32_t streamid, const QString &uuid, uint32_t pointer) override { - Q_EMIT q->windowScreencastRequested(createStream(resource, streamid), uuid, ScreencastInterface::CursorMode(pointer)); + Q_EMIT q->windowScreencastRequested(createStream(resource, streamid), uuid, ScreencastV1Interface::CursorMode(pointer)); } - void zkde_screencast_unstable_v1_destroy(Resource * resource) override + void zkde_screencast_unstable_v1_destroy(Resource *resource) override { wl_resource_destroy(resource->handle); } - ScreencastInterface *const q; + ScreencastV1Interface *const q; }; -ScreencastInterface::ScreencastInterface(Display *display, QObject *parent) +ScreencastV1Interface::ScreencastV1Interface(Display *display, QObject *parent) : QObject(parent) - , d(new ScreencastInterfacePrivate(display, this)) + , d(new ScreencastV1InterfacePrivate(display, this)) { } -ScreencastInterface::~ScreencastInterface() = default; +ScreencastV1Interface::~ScreencastV1Interface() = default; + +} // namespace KWaylandServer diff --git a/src/wayland/screencast_v1_interface.h b/src/wayland/screencast_v1_interface.h new file mode 100644 index 0000000000..925b83f6a6 --- /dev/null +++ b/src/wayland/screencast_v1_interface.h @@ -0,0 +1,66 @@ +/* + SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#pragma once + +#include +#include +#include + +struct wl_resource; + +namespace KWaylandServer +{ + +class Display; +class OutputInterface; +class ScreencastV1InterfacePrivate; +class ScreencastStreamV1InterfacePrivate; +class ScreencastStreamV1Interface; + +class KWAYLANDSERVER_EXPORT ScreencastStreamV1Interface : public QObject +{ + Q_OBJECT +public: + ~ScreencastStreamV1Interface() override; + + void sendCreated(quint32 nodeid); + void sendFailed(const QString &error); + void sendClosed(); + +Q_SIGNALS: + void finished(); + +private: + friend class ScreencastV1InterfacePrivate; + explicit ScreencastStreamV1Interface(QObject *parent); + QScopedPointer d; +}; + +class KWAYLANDSERVER_EXPORT ScreencastV1Interface : public QObject +{ + Q_OBJECT +public: + virtual ~ScreencastV1Interface(); + + enum CursorMode { + Hidden = 1, + Embedded = 2, + Metadata = 4, + }; + Q_ENUM(CursorMode); + +Q_SIGNALS: + void outputScreencastRequested(ScreencastStreamV1Interface *stream, OutputInterface *output, CursorMode mode); + void windowScreencastRequested(ScreencastStreamV1Interface *stream, const QString &winid, CursorMode mode); + +private: + explicit ScreencastV1Interface(Display *display, QObject *parent = nullptr); + friend class Display; + QScopedPointer d; +}; + +} diff --git a/src/wayland/server/screencast_interface.h b/src/wayland/server/screencast_interface.h deleted file mode 100644 index 7958529169..0000000000 --- a/src/wayland/server/screencast_interface.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ - -#pragma once - -#include -#include -#include - -struct wl_resource; - -namespace KWaylandServer -{ - -class Display; -class OutputInterface; -class ScreencastInterfacePrivate; -class ScreencastStreamInterfacePrivate; -class ScreencastStreamInterface; - -class KWAYLANDSERVER_EXPORT ScreencastStreamInterface : public QObject -{ - Q_OBJECT -public: - ~ScreencastStreamInterface() override; - - void sendCreated(quint32 nodeid); - void sendFailed(const QString &error); - void sendClosed(); - -Q_SIGNALS: - void finished(); - -private: - friend class ScreencastInterfacePrivate; - explicit ScreencastStreamInterface(QObject *parent); - QScopedPointer d; -}; - -class KWAYLANDSERVER_EXPORT ScreencastInterface : public QObject -{ - Q_OBJECT -public: - virtual ~ScreencastInterface(); - - enum CursorMode { - Hidden = 1, - Embedded = 2, - Metadata = 4, - }; - Q_ENUM(CursorMode); - - -Q_SIGNALS: - void outputScreencastRequested(ScreencastStreamInterface* stream, OutputInterface *output, CursorMode mode); - void windowScreencastRequested(ScreencastStreamInterface* stream, const QString &winid, CursorMode mode); - -private: - explicit ScreencastInterface(Display *display, QObject *parent = nullptr); - friend class Display; - QScopedPointer d; -}; - -}