From a9458fa0310fd8d9d428973918ccff4140b488b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9ven=20Car?= Date: Wed, 1 Sep 2021 17:37:41 +0200 Subject: [PATCH] Remove unused code after cee6912d0062cd51e90b520e72271706e6a92952 --- src/wayland/autotests/server/test_display.cpp | 1 - src/wayland/server/outputchangeset.cpp | 112 --- src/wayland/server/outputchangeset.h | 107 --- src/wayland/server/outputchangeset_p.h | 30 - .../server/outputconfiguration_interface.cpp | 299 ------- .../server/outputconfiguration_interface.h | 88 --- src/wayland/server/outputdevice_interface.cpp | 740 ------------------ src/wayland/server/outputdevice_interface.h | 201 ----- .../server/outputmanagement_interface.cpp | 57 -- .../server/outputmanagement_interface.h | 57 -- 10 files changed, 1692 deletions(-) delete mode 100644 src/wayland/server/outputchangeset.cpp delete mode 100644 src/wayland/server/outputchangeset.h delete mode 100644 src/wayland/server/outputchangeset_p.h delete mode 100644 src/wayland/server/outputconfiguration_interface.cpp delete mode 100644 src/wayland/server/outputconfiguration_interface.h delete mode 100644 src/wayland/server/outputdevice_interface.cpp delete mode 100644 src/wayland/server/outputdevice_interface.h delete mode 100644 src/wayland/server/outputmanagement_interface.cpp delete mode 100644 src/wayland/server/outputmanagement_interface.h diff --git a/src/wayland/autotests/server/test_display.cpp b/src/wayland/autotests/server/test_display.cpp index a4aa0e5bce..7dcdf5ddc1 100644 --- a/src/wayland/autotests/server/test_display.cpp +++ b/src/wayland/autotests/server/test_display.cpp @@ -9,7 +9,6 @@ #include "../../src/server/clientconnection.h" #include "../../src/server/display.h" #include "../../src/server/output_interface.h" -#include "../../src/server/outputmanagement_interface.h" #include "../../src/server/outputmanagement_v2_interface.h" // Wayland #include diff --git a/src/wayland/server/outputchangeset.cpp b/src/wayland/server/outputchangeset.cpp deleted file mode 100644 index afd6d1a5e3..0000000000 --- a/src/wayland/server/outputchangeset.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ - -#include "outputchangeset.h" -#include "outputchangeset_p.h" - -namespace KWaylandServer -{ -OutputChangeSetPrivate::OutputChangeSetPrivate(OutputDeviceInterface *outputdevice, OutputChangeSet *parent) - : q(parent) - , outputDevice(outputdevice) - , enabled(outputDevice->enabled()) - , modeId(outputDevice->currentModeId()) - , transform(outputDevice->transform()) - , position(outputDevice->globalPosition()) - , scale(outputDevice->scaleF()) - , colorCurves(outputDevice->colorCurves()) - , overscan(outputDevice->overscan()) -{ -} - -OutputChangeSet::OutputChangeSet(OutputDeviceInterface *outputdevice, QObject *parent) - : QObject(parent) - , d(new OutputChangeSetPrivate(outputdevice, this)) -{ -} - -OutputChangeSet::~OutputChangeSet() = default; - -bool OutputChangeSet::enabledChanged() const -{ - return d->enabled != d->outputDevice->enabled(); -} - -OutputDeviceInterface::Enablement OutputChangeSet::enabled() const -{ - return d->enabled; -} - -bool OutputChangeSet::modeChanged() const -{ - return d->modeId != d->outputDevice->currentModeId(); -} - -int OutputChangeSet::mode() const -{ - return d->modeId; -} - -bool OutputChangeSet::transformChanged() const -{ - return d->transform != d->outputDevice->transform(); -} - -OutputDeviceInterface::Transform OutputChangeSet::transform() const -{ - return d->transform; -} -bool OutputChangeSet::positionChanged() const -{ - return d->position != d->outputDevice->globalPosition(); -} - -QPoint OutputChangeSet::position() const -{ - return d->position; -} - -bool OutputChangeSet::scaleChanged() const -{ - return !qFuzzyCompare(d->scale, d->outputDevice->scaleF()); -} - -qreal OutputChangeSet::scaleF() const -{ - return d->scale; -} - -bool OutputChangeSet::colorCurvesChanged() const -{ - return d->colorCurves != d->outputDevice->colorCurves(); -} - -OutputDeviceInterface::ColorCurves OutputChangeSet::colorCurves() const -{ - return d->colorCurves; -} - -bool OutputChangeSet::overscanChanged() const -{ - return d->overscan != d->outputDevice->overscan(); -} - -uint32_t OutputChangeSet::overscan() const -{ - return d->overscan; -} - -bool OutputChangeSet::vrrPolicyChanged() const -{ - return d->vrrPolicy != d->outputDevice->vrrPolicy(); -} - -OutputDeviceInterface::VrrPolicy OutputChangeSet::vrrPolicy() const -{ - return d->vrrPolicy; -} - -} diff --git a/src/wayland/server/outputchangeset.h b/src/wayland/server/outputchangeset.h deleted file mode 100644 index 42de54d21d..0000000000 --- a/src/wayland/server/outputchangeset.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ - -#pragma once - -#include - -#include "outputdevice_interface.h" -#include - -namespace KWaylandServer -{ -class OutputChangeSetPrivate; - -/** - * @brief Holds a set of changes to an OutputInterface or OutputDeviceInterface. - * - * This class implements a set of changes that the compositor can apply to an - * OutputInterface after OutputConfiguration::apply has been called on the client - * side. The changes are per-configuration. - * - * @see OutputConfiguration - */ -class KWAYLANDSERVER_EXPORT OutputChangeSet : public QObject -{ - Q_OBJECT -public: - ~OutputChangeSet() override; - /** Whether the enabled() property of the outputdevice changed. - * @returns @c true if the enabled property of the outputdevice has changed. - */ - bool enabledChanged() const; - - /** Whether the currentModeId() property of the outputdevice changed. - * @returns @c true if the enabled property of the outputdevice has changed. - * bool modeChanged() const; - */ - /** Whether the transform() property of the outputdevice changed. */ - bool transformChanged() const; - - /** Whether the currentModeId() property of the outputdevice changed. - * @returns @c true if the currentModeId() property of the outputdevice has changed. - */ - bool modeChanged() const; - - /** Whether the globalPosition() property of the outputdevice changed. - * @returns @c true if the globalPosition() property of the outputdevice has changed. - */ - bool positionChanged() const; - - /** Whether the scale() property of the outputdevice changed. - * @returns @c true if the scale() property of the outputdevice has changed. - */ - bool scaleChanged() const; - - /** Whether the colorCurves() property of the outputdevice changed. - * @returns @c true if the colorCurves() property of the outputdevice has changed. - */ - bool colorCurvesChanged() const; - - /** Whether the overscan() property of the outputdevice changed. - * @returns @c true if the overscan() property of the outputdevice has changed - */ - bool overscanChanged() const; - - /** - * Whether the vrrPolicy() property of the outputdevice changed. - * @returns @c true if the vrrPolicy() property of the outputdevice has changed. - */ - bool vrrPolicyChanged() const; - - /** The new value for enabled. */ - OutputDeviceInterface::Enablement enabled() const; - - /** The new mode id.*/ - int mode() const; - - /** The new value for transform. */ - OutputDeviceInterface::Transform transform() const; - - /** The new value for globalPosition. */ - QPoint position() const; - - /** The new value for scale. - */ - qreal scaleF() const; - - /** The new value for colorCurves. */ - OutputDeviceInterface::ColorCurves colorCurves() const; - - /** the overscan value in % */ - uint32_t overscan() const; - - /** The new value for vrrPolicy */ - OutputDeviceInterface::VrrPolicy vrrPolicy() const; - -private: - friend class OutputConfigurationInterfacePrivate; - explicit OutputChangeSet(OutputDeviceInterface *outputdevice, QObject *parent = nullptr); - - QScopedPointer d; -}; - -} diff --git a/src/wayland/server/outputchangeset_p.h b/src/wayland/server/outputchangeset_p.h deleted file mode 100644 index 6f762c4a62..0000000000 --- a/src/wayland/server/outputchangeset_p.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#pragma once - -#include "outputchangeset.h" - -namespace KWaylandServer -{ -class OutputChangeSetPrivate -{ -public: - OutputChangeSetPrivate(OutputDeviceInterface *outputdevice, OutputChangeSet *parent); - - OutputChangeSet *q; - OutputDeviceInterface *outputDevice; - - OutputDeviceInterface::Enablement enabled; - int modeId; - OutputDeviceInterface::Transform transform; - QPoint position; - qreal scale; - OutputDeviceInterface::ColorCurves colorCurves; - uint32_t overscan; - OutputDeviceInterface::VrrPolicy vrrPolicy = OutputDeviceInterface::VrrPolicy::Automatic; -}; - -} diff --git a/src/wayland/server/outputconfiguration_interface.cpp b/src/wayland/server/outputconfiguration_interface.cpp deleted file mode 100644 index f9e7ca1956..0000000000 --- a/src/wayland/server/outputconfiguration_interface.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - SPDX-FileCopyrightText: 2014 Martin Gräßlin - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#include "outputconfiguration_interface.h" -#include "display.h" -#include "logging.h" -#include "outputchangeset_p.h" -#include "outputdevice_interface.h" - -#include "qwayland-server-org-kde-kwin-outputdevice.h" -#include "qwayland-server-outputmanagement.h" -#include - -#include - -namespace KWaylandServer -{ -class OutputConfigurationInterfacePrivate : public QtWaylandServer::org_kde_kwin_outputconfiguration -{ -public: - OutputConfigurationInterfacePrivate(OutputConfigurationInterface *q, OutputManagementInterface *outputManagement, wl_resource *resource); - - void sendApplied(); - void sendFailed(); - void emitConfigurationChangeRequested() const; - void clearPendingChanges(); - - bool hasPendingChanges(OutputDeviceInterface *outputdevice) const; - OutputChangeSet *pendingChanges(OutputDeviceInterface *outputdevice); - - OutputManagementInterface *outputManagement; - QHash changes; - OutputConfigurationInterface *q; - -protected: - void org_kde_kwin_outputconfiguration_enable(Resource *resource, wl_resource *outputdevice, int32_t enable) override; - void org_kde_kwin_outputconfiguration_mode(Resource *resource, wl_resource *outputdevice, int32_t mode_id) override; - void org_kde_kwin_outputconfiguration_transform(Resource *resource, wl_resource *outputdevice, int32_t transform) override; - void org_kde_kwin_outputconfiguration_position(Resource *resource, wl_resource *outputdevice, int32_t x, int32_t y) override; - void org_kde_kwin_outputconfiguration_scale(Resource *resource, wl_resource *outputdevice, int32_t scale) override; - void org_kde_kwin_outputconfiguration_apply(Resource *resource) override; - void org_kde_kwin_outputconfiguration_scalef(Resource *resource, wl_resource *outputdevice, wl_fixed_t scale) override; - void org_kde_kwin_outputconfiguration_colorcurves(Resource *resource, wl_resource *outputdevice, wl_array *red, wl_array *green, wl_array *blue) override; - void org_kde_kwin_outputconfiguration_set_vrr_policy(Resource *resource, wl_resource *outputdevice, uint32_t policy) override; - void org_kde_kwin_outputconfiguration_destroy(Resource *resource) override; - void org_kde_kwin_outputconfiguration_destroy_resource(Resource *resource) override; - void org_kde_kwin_outputconfiguration_overscan(Resource *resource, wl_resource *outputdevice, uint32_t overscan) override; -}; - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_enable(Resource *resource, wl_resource *outputdevice, int32_t enable) -{ - Q_UNUSED(resource) - auto _enable = - (enable == ORG_KDE_KWIN_OUTPUTDEVICE_ENABLEMENT_ENABLED) ? OutputDeviceInterface::Enablement::Enabled : OutputDeviceInterface::Enablement::Disabled; - - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - pendingChanges(output)->d->enabled = _enable; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_mode(Resource *resource, wl_resource *outputdevice, int32_t mode_id) -{ - Q_UNUSED(resource) - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - - bool modeValid = false; - for (const auto &m : output->modes()) { - if (m.id == mode_id) { - modeValid = true; - break; - } - } - if (!modeValid) { - qCWarning(KWAYLAND_SERVER) << "Set invalid mode id:" << mode_id; - return; - } - - pendingChanges(output)->d->modeId = mode_id; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_transform(Resource *resource, wl_resource *outputdevice, int32_t transform) -{ - Q_UNUSED(resource) - auto toTransform = [transform]() { - switch (transform) { - case WL_OUTPUT_TRANSFORM_90: - return OutputDeviceInterface::Transform::Rotated90; - case WL_OUTPUT_TRANSFORM_180: - return OutputDeviceInterface::Transform::Rotated180; - case WL_OUTPUT_TRANSFORM_270: - return OutputDeviceInterface::Transform::Rotated270; - case WL_OUTPUT_TRANSFORM_FLIPPED: - return OutputDeviceInterface::Transform::Flipped; - case WL_OUTPUT_TRANSFORM_FLIPPED_90: - return OutputDeviceInterface::Transform::Flipped90; - case WL_OUTPUT_TRANSFORM_FLIPPED_180: - return OutputDeviceInterface::Transform::Flipped180; - case WL_OUTPUT_TRANSFORM_FLIPPED_270: - return OutputDeviceInterface::Transform::Flipped270; - case WL_OUTPUT_TRANSFORM_NORMAL: - default: - return OutputDeviceInterface::Transform::Normal; - } - }; - auto _transform = toTransform(); - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - pendingChanges(output)->d->transform = _transform; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_position(Resource *resource, wl_resource *outputdevice, int32_t x, int32_t y) -{ - Q_UNUSED(resource) - auto _pos = QPoint(x, y); - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - pendingChanges(output)->d->position = _pos; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_scale(Resource *resource, wl_resource *outputdevice, int32_t scale) -{ - Q_UNUSED(resource) - if (scale <= 0) { - qCWarning(KWAYLAND_SERVER) << "Requested to scale output device to" << scale << ", but I can't do that."; - return; - } - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - - pendingChanges(output)->d->scale = scale; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_apply(Resource *resource) -{ - Q_UNUSED(resource) - emitConfigurationChangeRequested(); -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_scalef(Resource *resource, wl_resource *outputdevice, wl_fixed_t scale) -{ - Q_UNUSED(resource) - const qreal doubleScale = wl_fixed_to_double(scale); - - if (doubleScale <= 0) { - qCWarning(KWAYLAND_SERVER) << "Requested to scale output device to" << doubleScale << ", but I can't do that."; - return; - } - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - - pendingChanges(output)->d->scale = doubleScale; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_colorcurves(Resource *resource, - wl_resource *outputdevice, - wl_array *red, - wl_array *green, - wl_array *blue) -{ - Q_UNUSED(resource) - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - OutputDeviceInterface::ColorCurves oldCc = output->colorCurves(); - - auto checkArg = [](const wl_array *newColor, const QVector &oldColor) { - return (newColor->size % sizeof(uint16_t) == 0) && (newColor->size / sizeof(uint16_t) == static_cast(oldColor.size())); - }; - if (!checkArg(red, oldCc.red) || !checkArg(green, oldCc.green) || !checkArg(blue, oldCc.blue)) { - qCWarning(KWAYLAND_SERVER) << "Requested to change color curves, but have wrong size."; - return; - } - - OutputDeviceInterface::ColorCurves cc; - - auto fillVector = [](const wl_array *array, QVector *v) { - const uint16_t *pos = (uint16_t *)array->data; - - while ((char *)pos < (char *)array->data + array->size) { - v->append(*pos); - pos++; - } - }; - - fillVector(red, &cc.red); - fillVector(green, &cc.green); - fillVector(blue, &cc.blue); - - pendingChanges(output)->d->colorCurves = cc; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_overscan(Resource *resource, wl_resource *outputdevice, uint32_t overscan) -{ - Q_UNUSED(resource) - if (overscan > 100) { - qCWarning(KWAYLAND_SERVER) << "Invalid overscan requested:" << overscan; - return; - } - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - pendingChanges(output)->d->overscan = overscan; -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_set_vrr_policy(Resource *resource, wl_resource *outputdevice, uint32_t policy) -{ - Q_UNUSED(resource) - if (policy > static_cast(OutputDeviceInterface::VrrPolicy::Automatic)) { - qCWarning(KWAYLAND_SERVER) << "Invalid Vrr Policy requested:" << policy; - return; - } - OutputDeviceInterface *output = OutputDeviceInterface::get(outputdevice); - pendingChanges(output)->d->vrrPolicy = static_cast(policy); -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_destroy(Resource *resource) -{ - wl_resource_destroy(resource->handle); -} - -void OutputConfigurationInterfacePrivate::org_kde_kwin_outputconfiguration_destroy_resource(Resource *resource) -{ - Q_UNUSED(resource) - delete q; -} - -void OutputConfigurationInterfacePrivate::emitConfigurationChangeRequested() const -{ - auto configinterface = reinterpret_cast(q); - Q_EMIT outputManagement->configurationChangeRequested(configinterface); -} - -OutputConfigurationInterfacePrivate::OutputConfigurationInterfacePrivate(OutputConfigurationInterface *q, - OutputManagementInterface *outputManagement, - wl_resource *resource) - : QtWaylandServer::org_kde_kwin_outputconfiguration(resource) - , outputManagement(outputManagement) - , q(q) -{ -} - -QHash OutputConfigurationInterface::changes() const -{ - return d->changes; -} - -void OutputConfigurationInterface::setApplied() -{ - d->clearPendingChanges(); - d->sendApplied(); -} - -void OutputConfigurationInterfacePrivate::sendApplied() -{ - send_applied(); -} - -void OutputConfigurationInterface::setFailed() -{ - d->clearPendingChanges(); - d->sendFailed(); -} - -void OutputConfigurationInterfacePrivate::sendFailed() -{ - send_failed(); -} - -OutputChangeSet *OutputConfigurationInterfacePrivate::pendingChanges(OutputDeviceInterface *outputdevice) -{ - auto &change = changes[outputdevice]; - if (!change) { - change = new OutputChangeSet(outputdevice, q); - } - return change; -} - -bool OutputConfigurationInterfacePrivate::hasPendingChanges(OutputDeviceInterface *outputdevice) const -{ - auto it = changes.constFind(outputdevice); - if (it == changes.constEnd()) { - return false; - } - auto c = *it; - return c->enabledChanged() || c->modeChanged() || c->transformChanged() || c->positionChanged() || c->scaleChanged(); -} - -void OutputConfigurationInterfacePrivate::clearPendingChanges() -{ - qDeleteAll(changes.begin(), changes.end()); - changes.clear(); -} - -OutputConfigurationInterface::OutputConfigurationInterface(OutputManagementInterface *parent, wl_resource *resource) - : QObject() - , d(new OutputConfigurationInterfacePrivate(this, parent, resource)) -{ -} - -OutputConfigurationInterface::~OutputConfigurationInterface() -{ - d->clearPendingChanges(); -} - -} diff --git a/src/wayland/server/outputconfiguration_interface.h b/src/wayland/server/outputconfiguration_interface.h deleted file mode 100644 index f32556277d..0000000000 --- a/src/wayland/server/outputconfiguration_interface.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#pragma once - -#include "outputchangeset.h" -#include "outputdevice_interface.h" -#include "outputmanagement_interface.h" - -#include - -namespace KWaylandServer -{ -class OutputConfigurationInterfacePrivate; - -/** @class OutputConfigurationInterface - * - * Holds a new configuration for the outputs. - * - * The overall mechanism is to get a new OutputConfiguration from the OutputManagement global and - * apply changes through the OutputConfiguration::set* calls. When all changes are set, the client - * calls apply, which asks the server to look at the changes and apply them. The server will then - * signal back whether the changes have been applied successfully (@c setApplied()) or were rejected - * or failed to apply (@c setFailed()). - * - * Once the client has called applied, the OutputManagementInterface send the configuration object - * to the compositor through the OutputManagement::configurationChangeRequested(OutputConfiguration*) - * signal, the compositor can then decide what to do with the changes. - * - * These KWayland classes will not apply changes to the OutputDevices, this is the compositor's - * task. As such, the configuration set through this interface can be seen as a hint what the - * compositor should set up, but whether or not the compositor does it (based on hardware or - * rendering policies, for example), is up to the compositor. The mode setting is passed on to - * the DRM subsystem through the compositor. The compositor also saves this configuration and reads - * it on startup, this interface is not involved in that process. - * - * @see OutputManagementInterface - * @see OutputConfiguration - */ -class KWAYLANDSERVER_EXPORT OutputConfigurationInterface : public QObject -{ - Q_OBJECT -public: - ~OutputConfigurationInterface() override; - - /** - * Accessor for the changes made to OutputDevices. The data returned from this call - * will be deleted by the OutputConfigurationInterface when - * OutputManagementInterface::setApplied() or OutputManagementInterface::setFailed() - * is called, and on destruction of the OutputConfigurationInterface, so make sure you - * do not keep these pointers around. - * @returns A QHash of ChangeSets per outputdevice. - * @see ChangeSet - * @see OutputDeviceInterface - * @see OutputManagement - */ - QHash changes() const; - -public Q_SLOTS: - /** - * Called by the compositor once the changes have successfully been applied. - * The compositor is responsible for updating the OutputDevices. After having - * done so, calling this function sends applied() through the client. - * @see setFailed - * @see OutputConfiguration::applied - */ - void setApplied(); - /** - * Called by the compositor when the changes as a whole are rejected or - * failed to apply. This function results in the client OutputConfiguration emitting - * failed(). - * @see setApplied - * @see OutputConfiguration::failed - */ - void setFailed(); - -private: - explicit OutputConfigurationInterface(OutputManagementInterface *parent, wl_resource *resource); - friend class OutputManagementInterfacePrivate; - - QScopedPointer d; -}; - -} - -Q_DECLARE_METATYPE(KWaylandServer::OutputConfigurationInterface *) diff --git a/src/wayland/server/outputdevice_interface.cpp b/src/wayland/server/outputdevice_interface.cpp deleted file mode 100644 index 7eae12942e..0000000000 --- a/src/wayland/server/outputdevice_interface.cpp +++ /dev/null @@ -1,740 +0,0 @@ -/* - SPDX-FileCopyrightText: 2014 Martin Gräßlin - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#include "outputdevice_interface.h" -#include "display.h" -#include "display_p.h" -#include "logging.h" -#include "utils.h" - -#include "qwayland-server-org-kde-kwin-outputdevice.h" -#include -#include -#include - -namespace KWaylandServer -{ -static const quint32 s_version = 4; - -class OutputDeviceInterfacePrivate : public QtWaylandServer::org_kde_kwin_outputdevice -{ -public: - OutputDeviceInterfacePrivate(OutputDeviceInterface *q, Display *display); - - void updateGeometry(); - void updateUuid(); - void updateEdid(); - void updateEnabled(); - void updateScale(); - void updateColorCurves(); - void updateEisaId(); - void updateSerialNumber(); - void updateCapabilities(); - void updateOverscan(); - void updateVrrPolicy(); - - void sendGeometry(Resource *resource); - void sendMode(Resource *resource, const OutputDeviceInterface::Mode &mode); - void sendDone(Resource *resource); - void sendUuid(Resource *resource); - void sendEdid(Resource *resource); - void sendEnabled(Resource *resource); - void sendScale(Resource *resource); - void sendColorCurves(Resource *resource); - void sendEisaId(Resource *resource); - void sendSerialNumber(Resource *resource); - void sendCapabilities(Resource *resource); - void sendOverscan(Resource *resource); - void sendVrrPolicy(Resource *resource); - - static OutputDeviceInterface *get(wl_resource *native); - - QSize physicalSize; - QPoint globalPosition; - QString manufacturer = QStringLiteral("org.kde.kwin"); - QString model = QStringLiteral("none"); - qreal scale = 1.0; - QString serialNumber; - QString eisaId; - OutputDeviceInterface::SubPixel subPixel = OutputDeviceInterface::SubPixel::Unknown; - OutputDeviceInterface::Transform transform = OutputDeviceInterface::Transform::Normal; - OutputDeviceInterface::ColorCurves colorCurves; - QList modes; - OutputDeviceInterface::Mode currentMode; - QByteArray edid; - OutputDeviceInterface::Enablement enabled = OutputDeviceInterface::Enablement::Enabled; - QUuid uuid; - OutputDeviceInterface::Capabilities capabilities; - uint32_t overscan = 0; - OutputDeviceInterface::VrrPolicy vrrPolicy = OutputDeviceInterface::VrrPolicy::Automatic; - QPointer display; - OutputDeviceInterface *q; - -private: - int32_t toTransform() const; - int32_t toSubPixel() const; - -protected: - void org_kde_kwin_outputdevice_destroy_global() override; - void org_kde_kwin_outputdevice_bind_resource(Resource *resource) override; -}; - -void OutputDeviceInterfacePrivate::org_kde_kwin_outputdevice_destroy_global() -{ - delete q; -} - -OutputDeviceInterfacePrivate::OutputDeviceInterfacePrivate(OutputDeviceInterface *q, Display *display) - : QtWaylandServer::org_kde_kwin_outputdevice(*display, s_version) - , display(display) - , q(q) -{ -} - -OutputDeviceInterface::OutputDeviceInterface(Display *display, QObject *parent) - : QObject(parent) - , d(new OutputDeviceInterfacePrivate(this, display)) -{ - connect(this, &OutputDeviceInterface::currentModeChanged, this, [this] { - Q_ASSERT(d->currentMode.id >= 0); - const auto clientResources = d->resourceMap(); - for (auto resource : clientResources) { - d->sendMode(resource, d->currentMode); - d->sendDone(resource); - } - }); - connect(this, &OutputDeviceInterface::subPixelChanged, this, [this] { - d->updateGeometry(); - }); - connect(this, &OutputDeviceInterface::transformChanged, this, [this] { - d->updateGeometry(); - }); - connect(this, &OutputDeviceInterface::globalPositionChanged, this, [this] { - d->updateGeometry(); - }); - connect(this, &OutputDeviceInterface::modelChanged, this, [this] { - d->updateGeometry(); - }); - connect(this, &OutputDeviceInterface::manufacturerChanged, this, [this] { - d->updateGeometry(); - }); - connect(this, &OutputDeviceInterface::scaleFChanged, this, [this] { - d->updateScale(); - }); - connect(this, &OutputDeviceInterface::colorCurvesChanged, this, [this] { - d->updateColorCurves(); - }); - - DisplayPrivate *displayPrivate = DisplayPrivate::get(display); - displayPrivate->outputdevices.append(this); -} - -OutputDeviceInterface::~OutputDeviceInterface() -{ - remove(); -} - -void OutputDeviceInterface::remove() -{ - if (d->isGlobalRemoved()) { - return; - } - - if (d->display) { - DisplayPrivate *displayPrivate = DisplayPrivate::get(d->display); - displayPrivate->outputdevices.removeOne(this); - } - - d->globalRemove(); -} - -QSize OutputDeviceInterface::pixelSize() const -{ - if (d->currentMode.id == -1) { - return QSize(); - } - return d->currentMode.size; -} - -int OutputDeviceInterface::refreshRate() const -{ - if (d->currentMode.id == -1) { - return 60000; - } - return d->currentMode.refreshRate; -} - -void OutputDeviceInterface::addMode(Mode &mode) -{ - Q_ASSERT(mode.id >= 0); - Q_ASSERT(mode.size.isValid()); - - auto currentModeIt = std::find_if(d->modes.begin(), d->modes.end(), [](const Mode &mode) { - return mode.flags.testFlag(ModeFlag::Current); - }); - if (currentModeIt == d->modes.end() && !mode.flags.testFlag(ModeFlag::Current)) { - // no mode with current flag - enforce - mode.flags |= ModeFlag::Current; - } - if (currentModeIt != d->modes.end() && mode.flags.testFlag(ModeFlag::Current)) { - // another mode has the current flag - remove - (*currentModeIt).flags &= ~uint(ModeFlag::Current); - } - - if (mode.flags.testFlag(ModeFlag::Preferred)) { - // remove from existing Preferred mode - auto preferredIt = std::find_if(d->modes.begin(), d->modes.end(), [](const Mode &mode) { - return mode.flags.testFlag(ModeFlag::Preferred); - }); - if (preferredIt != d->modes.end()) { - (*preferredIt).flags &= ~uint(ModeFlag::Preferred); - } - } - - auto existingModeIt = std::find_if(d->modes.begin(), d->modes.end(), [mode](const Mode &mode_it) { - return mode.size == mode_it.size && mode.refreshRate == mode_it.refreshRate && mode.id == mode_it.id; - }); - auto emitChanges = [this, mode] { - Q_EMIT modesChanged(); - if (mode.flags.testFlag(ModeFlag::Current)) { - d->currentMode = mode; - Q_EMIT refreshRateChanged(mode.refreshRate); - Q_EMIT pixelSizeChanged(mode.size); - Q_EMIT currentModeChanged(); - } - }; - if (existingModeIt != d->modes.end()) { - if ((*existingModeIt).flags == mode.flags) { - // nothing to do - return; - } - (*existingModeIt).flags = mode.flags; - emitChanges(); - return; - } else { - auto idIt = std::find_if(d->modes.constBegin(), d->modes.constEnd(), [mode](const Mode &mode_it) { - return mode.id == mode_it.id; - }); - if (idIt != d->modes.constEnd()) { - qCWarning(KWAYLAND_SERVER) << "Duplicate Mode id" << mode.id << ": not adding mode" << mode.size << mode.refreshRate; - return; - } - } - d->modes << mode; - emitChanges(); -} - -void OutputDeviceInterface::setCurrentMode(const int modeId) -{ - auto currentModeIt = std::find_if(d->modes.begin(), d->modes.end(), [](const Mode &mode) { - return mode.flags.testFlag(ModeFlag::Current); - }); - if (currentModeIt != d->modes.end()) { - // another mode has the current flag - remove - (*currentModeIt).flags &= ~uint(ModeFlag::Current); - } - - auto existingModeIt = std::find_if(d->modes.begin(), d->modes.end(), [modeId](const Mode &mode) { - return mode.id == modeId; - }); - - Q_ASSERT(existingModeIt != d->modes.end()); - (*existingModeIt).flags |= ModeFlag::Current; - d->currentMode = *existingModeIt; - Q_EMIT modesChanged(); - Q_EMIT refreshRateChanged((*existingModeIt).refreshRate); - Q_EMIT pixelSizeChanged((*existingModeIt).size); - Q_EMIT currentModeChanged(); -} - -bool OutputDeviceInterface::setCurrentMode(const QSize &size, int refreshRate) -{ - auto mode = std::find_if(d->modes.constBegin(), d->modes.constEnd(), [size, refreshRate](const Mode &mode) { - return mode.size == size && mode.refreshRate == refreshRate; - }); - if (mode == d->modes.constEnd()) { - return false; - } - setCurrentMode((*mode).id); - return true; -} - -int32_t OutputDeviceInterfacePrivate::toTransform() const -{ - switch (transform) { - case OutputDeviceInterface::Transform::Normal: - return WL_OUTPUT_TRANSFORM_NORMAL; - case OutputDeviceInterface::Transform::Rotated90: - return WL_OUTPUT_TRANSFORM_90; - case OutputDeviceInterface::Transform::Rotated180: - return WL_OUTPUT_TRANSFORM_180; - case OutputDeviceInterface::Transform::Rotated270: - return WL_OUTPUT_TRANSFORM_270; - case OutputDeviceInterface::Transform::Flipped: - return WL_OUTPUT_TRANSFORM_FLIPPED; - case OutputDeviceInterface::Transform::Flipped90: - return WL_OUTPUT_TRANSFORM_FLIPPED_90; - case OutputDeviceInterface::Transform::Flipped180: - return WL_OUTPUT_TRANSFORM_FLIPPED_180; - case OutputDeviceInterface::Transform::Flipped270: - return WL_OUTPUT_TRANSFORM_FLIPPED_270; - } - abort(); -} - -int32_t OutputDeviceInterfacePrivate::toSubPixel() const -{ - switch (subPixel) { - case OutputDeviceInterface::SubPixel::Unknown: - return WL_OUTPUT_SUBPIXEL_UNKNOWN; - case OutputDeviceInterface::SubPixel::None: - return WL_OUTPUT_SUBPIXEL_NONE; - case OutputDeviceInterface::SubPixel::HorizontalRGB: - return WL_OUTPUT_SUBPIXEL_HORIZONTAL_RGB; - case OutputDeviceInterface::SubPixel::HorizontalBGR: - return WL_OUTPUT_SUBPIXEL_HORIZONTAL_BGR; - case OutputDeviceInterface::SubPixel::VerticalRGB: - return WL_OUTPUT_SUBPIXEL_VERTICAL_RGB; - case OutputDeviceInterface::SubPixel::VerticalBGR: - return WL_OUTPUT_SUBPIXEL_VERTICAL_BGR; - } - abort(); -} - -void OutputDeviceInterfacePrivate::org_kde_kwin_outputdevice_bind_resource(Resource *resource) -{ - sendGeometry(resource); - sendScale(resource); - sendColorCurves(resource); - sendEisaId(resource); - sendSerialNumber(resource); - - auto currentModeIt = modes.constEnd(); - for (auto it = modes.constBegin(); it != modes.constEnd(); ++it) { - const OutputDeviceInterface::Mode &mode = *it; - if (mode.flags.testFlag(OutputDeviceInterface::ModeFlag::Current)) { - // needs to be sent as last mode - currentModeIt = it; - continue; - } - sendMode(resource, mode); - } - - if (currentModeIt != modes.constEnd()) { - sendMode(resource, *currentModeIt); - } - - sendUuid(resource); - sendEdid(resource); - sendEnabled(resource); - sendCapabilities(resource); - sendOverscan(resource); - sendVrrPolicy(resource); - sendDone(resource); -} - -void OutputDeviceInterfacePrivate::sendMode(Resource *resource, const OutputDeviceInterface::Mode &mode) -{ - int32_t flags = 0; - if (mode.flags.testFlag(OutputDeviceInterface::ModeFlag::Current)) { - flags |= WL_OUTPUT_MODE_CURRENT; - } - if (mode.flags.testFlag(OutputDeviceInterface::ModeFlag::Preferred)) { - flags |= WL_OUTPUT_MODE_PREFERRED; - } - send_mode(resource->handle, flags, mode.size.width(), mode.size.height(), mode.refreshRate, mode.id); -} - -void OutputDeviceInterfacePrivate::sendGeometry(Resource *resource) -{ - send_geometry(resource->handle, - globalPosition.x(), - globalPosition.y(), - physicalSize.width(), - physicalSize.height(), - toSubPixel(), - manufacturer, - model, - toTransform()); -} - -void OutputDeviceInterfacePrivate::sendScale(Resource *resource) -{ - if (resource->version() < ORG_KDE_KWIN_OUTPUTDEVICE_SCALEF_SINCE_VERSION) { - send_scale(resource->handle, qRound(scale)); - } else { - send_scalef(resource->handle, wl_fixed_from_double(scale)); - } -} - -void OutputDeviceInterfacePrivate::sendColorCurves(Resource *resource) -{ - if (resource->version() < ORG_KDE_KWIN_OUTPUTDEVICE_COLORCURVES_SINCE_VERSION) { - return; - } - - QByteArray red = QByteArray::fromRawData(reinterpret_cast(colorCurves.red.constData()), sizeof(quint16) * colorCurves.red.size()); - - QByteArray green = QByteArray::fromRawData(reinterpret_cast(colorCurves.green.constData()), sizeof(quint16) * colorCurves.green.size()); - - QByteArray blue = QByteArray::fromRawData(reinterpret_cast(colorCurves.blue.constData()), sizeof(quint16) * colorCurves.blue.size()); - - send_colorcurves(resource->handle, red, green, blue); -} - -void KWaylandServer::OutputDeviceInterfacePrivate::sendSerialNumber(Resource *resource) -{ - if (resource->version() >= ORG_KDE_KWIN_OUTPUTDEVICE_SERIAL_NUMBER_SINCE_VERSION) { - send_serial_number(resource->handle, serialNumber); - } -} - -void KWaylandServer::OutputDeviceInterfacePrivate::sendEisaId(Resource *resource) -{ - if (resource->version() >= ORG_KDE_KWIN_OUTPUTDEVICE_EISA_ID_SINCE_VERSION) { - send_eisa_id(resource->handle, eisaId); - } -} - -void OutputDeviceInterfacePrivate::sendDone(Resource *resource) -{ - send_done(resource->handle); -} - -void OutputDeviceInterfacePrivate::updateGeometry() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendGeometry(resource); - sendDone(resource); - } -} - -void OutputDeviceInterfacePrivate::updateScale() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendScale(resource); - sendDone(resource); - } -} - -void OutputDeviceInterfacePrivate::updateColorCurves() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendColorCurves(resource); - sendDone(resource); - } -} - -bool OutputDeviceInterface::ColorCurves::operator==(const ColorCurves &cc) const -{ - return red == cc.red && green == cc.green && blue == cc.blue; -} -bool OutputDeviceInterface::ColorCurves::operator!=(const ColorCurves &cc) const -{ - return !operator==(cc); -} - -#define SETTER(setterName, type, argumentName) \ - void OutputDeviceInterface::setterName(type arg) \ - { \ - if (d->argumentName == arg) { \ - return; \ - } \ - d->argumentName = arg; \ - Q_EMIT argumentName##Changed(d->argumentName); \ - } - -SETTER(setPhysicalSize, const QSize &, physicalSize) -SETTER(setGlobalPosition, const QPoint &, globalPosition) -SETTER(setManufacturer, const QString &, manufacturer) -SETTER(setModel, const QString &, model) -SETTER(setSerialNumber, const QString &, serialNumber) -SETTER(setEisaId, const QString &, eisaId) -SETTER(setSubPixel, SubPixel, subPixel) -SETTER(setTransform, Transform, transform) - -#undef SETTER - -void OutputDeviceInterface::setScaleF(qreal scale) -{ - if (qFuzzyCompare(d->scale, scale)) { - return; - } - d->scale = scale; - Q_EMIT scaleFChanged(d->scale); -} - -QSize OutputDeviceInterface::physicalSize() const -{ - return d->physicalSize; -} - -QPoint OutputDeviceInterface::globalPosition() const -{ - return d->globalPosition; -} - -QString OutputDeviceInterface::manufacturer() const -{ - return d->manufacturer; -} - -QString OutputDeviceInterface::model() const -{ - return d->model; -} - -QString OutputDeviceInterface::serialNumber() const -{ - return d->serialNumber; -} - -QString OutputDeviceInterface::eisaId() const -{ - return d->eisaId; -} - -qreal OutputDeviceInterface::scaleF() const -{ - return d->scale; -} - -OutputDeviceInterface::SubPixel OutputDeviceInterface::subPixel() const -{ - return d->subPixel; -} - -OutputDeviceInterface::Transform OutputDeviceInterface::transform() const -{ - return d->transform; -} - -OutputDeviceInterface::ColorCurves OutputDeviceInterface::colorCurves() const -{ - return d->colorCurves; -} - -QList OutputDeviceInterface::modes() const -{ - return d->modes; -} - -int OutputDeviceInterface::currentModeId() const -{ - for (const Mode &m : d->modes) { - if (m.flags.testFlag(OutputDeviceInterface::ModeFlag::Current)) { - return m.id; - } - } - return -1; -} - -void OutputDeviceInterface::setColorCurves(const ColorCurves &colorCurves) -{ - if (d->colorCurves == colorCurves) { - return; - } - d->colorCurves = colorCurves; - Q_EMIT colorCurvesChanged(d->colorCurves); -} - -void OutputDeviceInterface::setEdid(const QByteArray &edid) -{ - d->edid = edid; - d->updateEdid(); - Q_EMIT edidChanged(); -} - -QByteArray OutputDeviceInterface::edid() const -{ - return d->edid; -} - -void OutputDeviceInterface::setEnabled(OutputDeviceInterface::Enablement enabled) -{ - if (d->enabled != enabled) { - d->enabled = enabled; - d->updateEnabled(); - Q_EMIT enabledChanged(); - } -} - -OutputDeviceInterface::Enablement OutputDeviceInterface::enabled() const -{ - return d->enabled; -} - -void OutputDeviceInterface::setUuid(const QUuid &uuid) -{ - if (d->uuid != uuid) { - d->uuid = uuid; - d->updateUuid(); - Q_EMIT uuidChanged(); - } -} - -QUuid OutputDeviceInterface::uuid() const -{ - return d->uuid; -} - -void OutputDeviceInterfacePrivate::sendEdid(Resource *resource) -{ - send_edid(resource->handle, QString::fromStdString(edid.toBase64().toStdString())); -} - -void OutputDeviceInterfacePrivate::sendEnabled(Resource *resource) -{ - int32_t _enabled = 0; - if (enabled == OutputDeviceInterface::Enablement::Enabled) { - _enabled = 1; - } - send_enabled(resource->handle, _enabled); -} - -void OutputDeviceInterfacePrivate::sendUuid(Resource *resource) -{ - send_uuid(resource->handle, uuid.toString(QUuid::WithoutBraces)); -} - -void OutputDeviceInterfacePrivate::updateEnabled() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendEnabled(resource); - } -} - -void OutputDeviceInterfacePrivate::updateEdid() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendEdid(resource); - } -} - -void OutputDeviceInterfacePrivate::updateUuid() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendUuid(resource); - } -} - -void OutputDeviceInterfacePrivate::updateEisaId() -{ - const auto clientResources = resourceMap(); - for (auto resource : clientResources) { - sendEisaId(resource); - } -} - -uint32_t OutputDeviceInterface::overscan() const -{ - return d->overscan; -} - -OutputDeviceInterface::Capabilities OutputDeviceInterface::capabilities() const -{ - return d->capabilities; -} - -void OutputDeviceInterface::setCapabilities(Capabilities cap) -{ - if (d->capabilities != cap) { - d->capabilities = cap; - d->updateCapabilities(); - Q_EMIT capabilitiesChanged(); - } -} - -void OutputDeviceInterfacePrivate::sendCapabilities(Resource *resource) -{ - if (resource->version() < ORG_KDE_KWIN_OUTPUTDEVICE_CAPABILITIES_SINCE_VERSION) { - return; - } - send_capabilities(resource->handle, static_cast(capabilities)); -} - -void OutputDeviceInterfacePrivate::updateCapabilities() -{ - const auto clientResources = resourceMap(); - for (const auto &resource : clientResources) { - sendCapabilities(resource); - } -} - -void OutputDeviceInterface::setOverscan(uint32_t overscan) -{ - if (d->overscan != overscan) { - d->overscan = overscan; - d->updateOverscan(); - Q_EMIT overscanChanged(); - } -} - -void OutputDeviceInterfacePrivate::sendOverscan(Resource *resource) -{ - if (resource->version() < ORG_KDE_KWIN_OUTPUTDEVICE_OVERSCAN_SINCE_VERSION) { - return; - } - send_overscan(resource->handle, static_cast(overscan)); -} - -void OutputDeviceInterfacePrivate::updateOverscan() -{ - const auto clientResources = resourceMap(); - for (const auto &resource : clientResources) { - sendOverscan(resource); - } -} - -void OutputDeviceInterfacePrivate::sendVrrPolicy(Resource *resource) -{ - if (resource->version() < ORG_KDE_KWIN_OUTPUTDEVICE_VRR_POLICY_SINCE_VERSION) { - return; - } - send_vrr_policy(resource->handle, static_cast(vrrPolicy)); -} - -OutputDeviceInterface::VrrPolicy OutputDeviceInterface::vrrPolicy() const -{ - return d->vrrPolicy; -} - -void OutputDeviceInterface::setVrrPolicy(VrrPolicy policy) -{ - if (d->vrrPolicy != policy) { - d->vrrPolicy = policy; - d->updateVrrPolicy(); - Q_EMIT vrrPolicyChanged(); - } -} - -void OutputDeviceInterfacePrivate::updateVrrPolicy() -{ - const auto clientResources = resourceMap(); - for (const auto &resource : clientResources) { - sendVrrPolicy(resource); - } -} - -OutputDeviceInterface *OutputDeviceInterfacePrivate::get(wl_resource *native) -{ - if (auto devicePrivate = resource_cast(native)) { - return devicePrivate->q; - } - return nullptr; -} - -OutputDeviceInterface *OutputDeviceInterface::get(wl_resource *native) -{ - return OutputDeviceInterfacePrivate::get(native); -} - -} diff --git a/src/wayland/server/outputdevice_interface.h b/src/wayland/server/outputdevice_interface.h deleted file mode 100644 index f994950227..0000000000 --- a/src/wayland/server/outputdevice_interface.h +++ /dev/null @@ -1,201 +0,0 @@ -/* - SPDX-FileCopyrightText: 2014 Martin Gräßlin - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#pragma once - -#include - -#include -#include -#include -#include -#include - -struct wl_resource; - -namespace KWaylandServer -{ -class Display; -class OutputDeviceInterfacePrivate; - -/** @class OutputDeviceInterface - * - * Represents an output device, the difference to Output is that this output can be disabled, - * so not currently used to display content. - * - * @see OutputManagementInterface - */ -class KWAYLANDSERVER_EXPORT OutputDeviceInterface : public QObject -{ - Q_OBJECT - Q_PROPERTY(QSize physicalSize READ physicalSize WRITE setPhysicalSize NOTIFY physicalSizeChanged) - Q_PROPERTY(QPoint globalPosition READ globalPosition WRITE setGlobalPosition NOTIFY globalPositionChanged) - Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged) - Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged) - Q_PROPERTY(QString serialNumber READ serialNumber WRITE setSerialNumber NOTIFY serialNumberChanged) - Q_PROPERTY(QString eisaId READ eisaId WRITE setEisaId NOTIFY eisaIdChanged) - Q_PROPERTY(QSize pixelSize READ pixelSize NOTIFY pixelSizeChanged) - Q_PROPERTY(int refreshRate READ refreshRate NOTIFY refreshRateChanged) - Q_PROPERTY(qreal scale READ scaleF WRITE setScaleF NOTIFY scaleFChanged) - Q_PROPERTY(QByteArray edid READ edid WRITE setEdid NOTIFY edidChanged) - Q_PROPERTY(OutputDeviceInterface::Enablement enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) - Q_PROPERTY(QUuid uuid READ uuid WRITE setUuid NOTIFY uuidChanged) - Q_PROPERTY(Capabilities capabilities READ capabilities WRITE setCapabilities NOTIFY capabilitiesChanged) - Q_PROPERTY(uint32_t overscan READ overscan WRITE setOverscan NOTIFY overscanChanged) - Q_PROPERTY(VrrPolicy vrrPolicy READ vrrPolicy WRITE setVrrPolicy NOTIFY vrrPolicyChanged) -public: - enum class SubPixel { - Unknown, - None, - HorizontalRGB, - HorizontalBGR, - VerticalRGB, - VerticalBGR, - }; - Q_ENUM(SubPixel) - enum class Transform { - Normal, - Rotated90, - Rotated180, - Rotated270, - Flipped, - Flipped90, - Flipped180, - Flipped270, - }; - Q_ENUM(Transform) - enum class Enablement { - Disabled = 0, - Enabled = 1, - }; - Q_ENUM(Enablement) - enum class ModeFlag { - Current = 1, - Preferred = 2, - }; - Q_ENUM(ModeFlag) - Q_DECLARE_FLAGS(ModeFlags, ModeFlag) - struct Mode { - QSize size = QSize(); - int refreshRate = 60000; - ModeFlags flags; - int id = -1; - }; - struct ColorCurves { - QVector red, green, blue; - bool operator==(const ColorCurves &cc) const; - bool operator!=(const ColorCurves &cc) const; - }; - enum class Capability { - Overscan = 0x1, - Vrr = 0x2, - }; - Q_ENUM(Capability) - Q_DECLARE_FLAGS(Capabilities, Capability) - enum class VrrPolicy { Never = 0, Always = 1, Automatic = 2 }; - Q_ENUM(VrrPolicy) - - explicit OutputDeviceInterface(Display *display, QObject *parent = nullptr); - ~OutputDeviceInterface() override; - - void remove(); - - QSize physicalSize() const; - QPoint globalPosition() const; - QString manufacturer() const; - QString model() const; - QString serialNumber() const; - QString eisaId() const; - QSize pixelSize() const; - int refreshRate() const; - - qreal scaleF() const; - SubPixel subPixel() const; - Transform transform() const; - ColorCurves colorCurves() const; - QList modes() const; - int currentModeId() const; - - QByteArray edid() const; - OutputDeviceInterface::Enablement enabled() const; - QUuid uuid() const; - - Capabilities capabilities() const; - uint32_t overscan() const; - VrrPolicy vrrPolicy() const; - - void setPhysicalSize(const QSize &size); - void setGlobalPosition(const QPoint &pos); - void setManufacturer(const QString &manufacturer); - void setModel(const QString &model); - void setSerialNumber(const QString &serialNumber); - void setEisaId(const QString &eisaId); - - void setScaleF(qreal scale); - void setSubPixel(SubPixel subPixel); - void setTransform(Transform transform); - void setColorCurves(const ColorCurves &colorCurves); - - /** - * Add an additional mode to this output device. This is only allowed before create() is called - * on the object. - * - * @param mode must have a valid size and non-negative id. - */ - void addMode(Mode &mode); - void setCurrentMode(const int modeId); - /** - * Makes the mode with the specified @a size and @a refreshRate current. - * Returns @c false if no mode with the given attributes exists; otherwise returns @c true. - */ - bool setCurrentMode(const QSize &size, int refreshRate); - - void setEdid(const QByteArray &edid); - void setEnabled(OutputDeviceInterface::Enablement enabled); - void setUuid(const QUuid &uuid); - - void setCapabilities(Capabilities cap); - void setOverscan(uint32_t overscan); - void setVrrPolicy(VrrPolicy policy); - - static OutputDeviceInterface *get(wl_resource *native); - static QList list(); - -Q_SIGNALS: - void physicalSizeChanged(const QSize &); - void globalPositionChanged(const QPoint &); - void manufacturerChanged(const QString &); - void modelChanged(const QString &); - void serialNumberChanged(const QString &); - void eisaIdChanged(const QString &); - void pixelSizeChanged(const QSize &); - void refreshRateChanged(int); - - void scaleFChanged(qreal); - void subPixelChanged(SubPixel); - void transformChanged(Transform); - void colorCurvesChanged(ColorCurves); - void modesChanged(); - void currentModeChanged(); - - void edidChanged(); - void enabledChanged(); - void uuidChanged(); - - void capabilitiesChanged(); - void overscanChanged(); - void vrrPolicyChanged(); - -private: - QScopedPointer d; -}; - -} - -Q_DECLARE_OPERATORS_FOR_FLAGS(KWaylandServer::OutputDeviceInterface::ModeFlags) -Q_DECLARE_METATYPE(KWaylandServer::OutputDeviceInterface::Enablement) -Q_DECLARE_METATYPE(KWaylandServer::OutputDeviceInterface::SubPixel) -Q_DECLARE_METATYPE(KWaylandServer::OutputDeviceInterface::Transform) -Q_DECLARE_METATYPE(KWaylandServer::OutputDeviceInterface::ColorCurves) diff --git a/src/wayland/server/outputmanagement_interface.cpp b/src/wayland/server/outputmanagement_interface.cpp deleted file mode 100644 index ed24e76350..0000000000 --- a/src/wayland/server/outputmanagement_interface.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - SPDX-FileCopyrightText: 2014 Martin Gräßlin - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#include "display.h" - -#include "outputmanagement_interface.h" -#include "outputconfiguration_interface.h" - -#include "qwayland-server-outputmanagement.h" -#include - -#include - -namespace KWaylandServer -{ -static const quint32 s_version = 4; - -class OutputManagementInterfacePrivate : public QtWaylandServer::org_kde_kwin_outputmanagement -{ -public: - OutputManagementInterfacePrivate(OutputManagementInterface *_q, Display *display); - -private: - OutputManagementInterface *q; - -protected: - void org_kde_kwin_outputmanagement_create_configuration(Resource *resource, uint32_t id) override; -}; - -OutputManagementInterfacePrivate::OutputManagementInterfacePrivate(OutputManagementInterface *_q, Display *display) - : QtWaylandServer::org_kde_kwin_outputmanagement(*display, s_version) - , q(_q) -{ -} - -void OutputManagementInterfacePrivate::org_kde_kwin_outputmanagement_create_configuration(Resource *resource, uint32_t id) -{ - wl_resource *config_resource = wl_resource_create(resource->client(), &org_kde_kwin_outputconfiguration_interface, resource->version(), id); - if (!config_resource) { - wl_client_post_no_memory(resource->client()); - return; - } - new OutputConfigurationInterface(q, config_resource); -} - -OutputManagementInterface::OutputManagementInterface(Display *display, QObject *parent) - : QObject(parent) - , d(new OutputManagementInterfacePrivate(this, display)) -{ -} - -OutputManagementInterface::~OutputManagementInterface() = default; - -} diff --git a/src/wayland/server/outputmanagement_interface.h b/src/wayland/server/outputmanagement_interface.h deleted file mode 100644 index 24ccb62285..0000000000 --- a/src/wayland/server/outputmanagement_interface.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 Sebastian Kügler - - SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL -*/ -#pragma once - -#include - -#include - -namespace KWaylandServer -{ -class OutputManagementInterfacePrivate; -class OutputConfigurationInterface; -/** - * @class OutputManagementInterface - * - * This class is used to change the configuration of the Wayland server's outputs. - * The client requests an OutputConfiguration, changes its OutputDevices and then - * calls OutputConfiguration::apply, which makes this class Q_EMIT a signal, carrying - * the new configuration. - * The server is then expected to make the requested changes by applying the settings - * of the OutputDevices to the Outputs. - * - * @see OutputConfiguration - * @see OutputConfigurationInterface - */ -class KWAYLANDSERVER_EXPORT OutputManagementInterface : public QObject -{ - Q_OBJECT - -public: - explicit OutputManagementInterface(Display *display, QObject *parent = nullptr); - ~OutputManagementInterface() override; - -Q_SIGNALS: - /** - * Emitted after the client has requested an OutputConfiguration to be applied. - * through OutputConfiguration::apply. The compositor can use this object to get - * notified when the new configuration is set up, and it should be applied to the - * Wayland server's OutputInterfaces. - * - * @param config The OutputConfigurationInterface corresponding to the client that - * called apply(). - * @see OutputConfiguration::apply - * @see OutputConfigurationInterface - * @see OutputDeviceInterface - * @see OutputInterface - */ - void configurationChangeRequested(KWaylandServer::OutputConfigurationInterface *configurationInterface); - -private: - QScopedPointer d; -}; - -}