diff --git a/src/client/outputdevice.h b/src/client/outputdevice.h --- a/src/client/outputdevice.h +++ b/src/client/outputdevice.h @@ -159,6 +159,14 @@ * Textual description of the model. **/ QString model() const; + /** + * Textual representation of serial number. + */ + QString serialNumber() const; + /** + * Textual representation of EISA identifier. + */ + QString eisaId() const; /** * Size in the current mode. **/ diff --git a/src/client/outputdevice.cpp b/src/client/outputdevice.cpp --- a/src/client/outputdevice.cpp +++ b/src/client/outputdevice.cpp @@ -49,6 +49,8 @@ QPoint globalPosition; QString manufacturer; QString model; + QString serialNumber; + QString eisaId; int scale = 1; SubPixel subPixel = SubPixel::Unknown; Transform transform = Transform::Normal; @@ -63,7 +65,8 @@ private: static void geometryCallback(void *data, org_kde_kwin_outputdevice *output, int32_t x, int32_t y, int32_t physicalWidth, int32_t physicalHeight, int32_t subPixel, - const char *make, const char *model, int32_t transform); + const char *make, const char *model, const char *serialNumber, + const char *eisaId, int32_t transform); static void modeCallback(void *data, org_kde_kwin_outputdevice *output, uint32_t flags, int32_t width, int32_t height, int32_t refresh, int32_t mode_id); static void doneCallback(void *data, org_kde_kwin_outputdevice *output); static void scaleCallback(void *data, org_kde_kwin_outputdevice *output, int32_t scale); @@ -76,6 +79,8 @@ 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 setScale(int scale); void setSubPixel(SubPixel subPixel); void setTransform(Transform transform); @@ -130,14 +135,18 @@ void OutputDevice::Private::geometryCallback(void *data, org_kde_kwin_outputdevice *output, int32_t x, int32_t y, int32_t physicalWidth, int32_t physicalHeight, - int32_t subPixel, const char *make, const char *model, int32_t transform) + int32_t subPixel, const char *make, const char *model, + const char *serialNumber, const char *eisaId, + int32_t transform) { Q_UNUSED(transform) auto o = reinterpret_cast(data); Q_ASSERT(o->output == output); o->setGlobalPosition(QPoint(x, y)); o->setManufacturer(make); o->setModel(model); + o->setSerialNumber(serialNumber); + o->setEisaId(eisaId); o->setPhysicalSize(QSize(physicalWidth, physicalHeight)); auto toSubPixel = [subPixel]() { switch (subPixel) { @@ -322,6 +331,16 @@ model = m; } +void OutputDevice::Private::setSerialNumber(const QString &sn) +{ + serialNumber = sn; +} + +void OutputDevice::Private::setEisaId(const QString &e) +{ + eisaId = e; +} + void OutputDevice::Private::setPhysicalSize(const QSize &size) { physicalSize = size; @@ -365,6 +384,16 @@ return d->model; } +QString OutputDevice::serialNumber() const +{ + return d->serialNumber; +} + +QString OutputDevice::eisaId() const +{ + return d->eisaId; +} + org_kde_kwin_outputdevice *OutputDevice::output() { return d->output; diff --git a/src/client/protocols/outputdevice.xml b/src/client/protocols/outputdevice.xml --- a/src/client/protocols/outputdevice.xml +++ b/src/client/protocols/outputdevice.xml @@ -101,6 +101,10 @@ summary="textual description of the manufacturer"/> + + diff --git a/src/server/outputdevice_interface.h b/src/server/outputdevice_interface.h --- a/src/server/outputdevice_interface.h +++ b/src/server/outputdevice_interface.h @@ -51,6 +51,8 @@ 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(int scale READ scale WRITE setScale NOTIFY scaleChanged) @@ -97,6 +99,8 @@ QPoint globalPosition() const; QString manufacturer() const; QString model() const; + QString serialNumber() const; + QString eisaId() const; QSize pixelSize() const; int refreshRate() const; int scale() const; @@ -113,6 +117,8 @@ 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 setScale(int scale); void setSubPixel(SubPixel subPixel); void setTransform(Transform transform); @@ -131,6 +137,8 @@ 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 scaleChanged(int); diff --git a/src/server/outputdevice_interface.cpp b/src/server/outputdevice_interface.cpp --- a/src/server/outputdevice_interface.cpp +++ b/src/server/outputdevice_interface.cpp @@ -54,6 +54,8 @@ QPoint globalPosition; QString manufacturer = QStringLiteral("org.kde.kwin"); QString model = QStringLiteral("none"); + QString serialNumber; + QString eisaId; int scale = 1; SubPixel subPixel = SubPixel::Unknown; Transform transform = Transform::Normal; @@ -138,6 +140,8 @@ connect(this, &OutputDeviceInterface::globalPositionChanged, this, [this, d] { d->updateGeometry(); }); connect(this, &OutputDeviceInterface::modelChanged, this, [this, d] { d->updateGeometry(); }); connect(this, &OutputDeviceInterface::manufacturerChanged, this, [this, d] { d->updateGeometry(); }); + connect(this, &OutputDeviceInterface::serialNumberChanged, this, [this, d] { d->updateGeometry(); }); + connect(this, &OutputDeviceInterface::eisaIdChanged, this, [this, d] { d->updateGeometry(); }); connect(this, &OutputDeviceInterface::scaleChanged, this, [this, d] { d->updateScale(); }); } @@ -397,6 +401,8 @@ toSubPixel(), qPrintable(manufacturer), qPrintable(model), + qPrintable(serialNumber), + qPrintable(eisaId), toTransform()); } @@ -441,6 +447,8 @@ 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(setScale, int, scale) SETTER(setSubPixel, SubPixel, subPixel) SETTER(setTransform, Transform, transform) @@ -471,6 +479,18 @@ return d->model; } +QString OutputDeviceInterface::serialNumber() const +{ + Q_D(); + return d->serialNumber; +} + +QString OutputDeviceInterface::eisaId() const +{ + Q_D(); + return d->eisaId; +} + int OutputDeviceInterface::scale() const { Q_D();