Changeset View
Changeset View
Standalone View
Standalone View
plugins/platforms/drm/drm_output.cpp
Show All 33 Lines | |||||
34 | #include "wayland_server.h" | 34 | #include "wayland_server.h" | ||
35 | // KWayland | 35 | // KWayland | ||
36 | #include <KWayland/Server/display.h> | 36 | #include <KWayland/Server/display.h> | ||
37 | #include <KWayland/Server/output_interface.h> | 37 | #include <KWayland/Server/output_interface.h> | ||
38 | #include <KWayland/Server/outputchangeset.h> | 38 | #include <KWayland/Server/outputchangeset.h> | ||
39 | #include <KWayland/Server/outputdevice_interface.h> | 39 | #include <KWayland/Server/outputdevice_interface.h> | ||
40 | #include <KWayland/Server/outputmanagement_interface.h> | 40 | #include <KWayland/Server/outputmanagement_interface.h> | ||
41 | #include <KWayland/Server/outputconfiguration_interface.h> | 41 | #include <KWayland/Server/outputconfiguration_interface.h> | ||
42 | #include <KWayland/Server/xdgoutput_interface.h> | ||||
42 | // KF5 | 43 | // KF5 | ||
43 | #include <KConfigGroup> | 44 | #include <KConfigGroup> | ||
44 | #include <KLocalizedString> | 45 | #include <KLocalizedString> | ||
45 | #include <KSharedConfig> | 46 | #include <KSharedConfig> | ||
46 | // Qt | 47 | // Qt | ||
47 | #include <QMatrix4x4> | 48 | #include <QMatrix4x4> | ||
48 | #include <QCryptographicHash> | 49 | #include <QCryptographicHash> | ||
49 | #include <QPainter> | 50 | #include <QPainter> | ||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Line(s) | 170 | { | |||
170 | if (m_orientation == Qt::PortraitOrientation || m_orientation == Qt::InvertedPortraitOrientation) { | 171 | if (m_orientation == Qt::PortraitOrientation || m_orientation == Qt::InvertedPortraitOrientation) { | ||
171 | return QSize(m_physicalSize.height(), m_physicalSize.width()); | 172 | return QSize(m_physicalSize.height(), m_physicalSize.width()); | ||
172 | } | 173 | } | ||
173 | return m_physicalSize; | 174 | return m_physicalSize; | ||
174 | } | 175 | } | ||
175 | 176 | | |||
176 | QRect DrmOutput::geometry() const | 177 | QRect DrmOutput::geometry() const | ||
177 | { | 178 | { | ||
178 | return QRect(m_globalPos, pixelSize() / scale()); | 179 | return QRect(m_globalPos, pixelSize() / m_scale); | ||
179 | } | 180 | } | ||
180 | 181 | | |||
181 | qreal DrmOutput::scale() const | 182 | qreal DrmOutput::scale() const | ||
182 | { | 183 | { | ||
183 | return m_scale; | 184 | return m_scale; | ||
184 | } | 185 | } | ||
185 | 186 | | |||
186 | void DrmOutput::setEnabled(bool enabled) | 187 | void DrmOutput::setEnabled(bool enabled) | ||
▲ Show 20 Lines • Show All 146 Lines • ▼ Show 20 Line(s) | |||||
333 | void DrmOutput::initOutput() | 334 | void DrmOutput::initOutput() | ||
334 | { | 335 | { | ||
335 | Q_ASSERT(m_waylandOutputDevice); | 336 | Q_ASSERT(m_waylandOutputDevice); | ||
336 | if (!m_waylandOutput.isNull()) { | 337 | if (!m_waylandOutput.isNull()) { | ||
337 | delete m_waylandOutput.data(); | 338 | delete m_waylandOutput.data(); | ||
338 | m_waylandOutput.clear(); | 339 | m_waylandOutput.clear(); | ||
339 | } | 340 | } | ||
340 | m_waylandOutput = waylandServer()->display()->createOutput(); | 341 | m_waylandOutput = waylandServer()->display()->createOutput(); | ||
342 | m_xdgOutput = waylandServer()->xdgOutputManager()->createXdgOutput(m_waylandOutput, m_waylandOutput); | ||||
341 | connect(this, &DrmOutput::modeChanged, this, | 343 | connect(this, &DrmOutput::modeChanged, this, | ||
342 | [this] { | 344 | [this] { | ||
343 | if (m_waylandOutput.isNull()) { | 345 | if (m_waylandOutput.isNull()) { | ||
344 | return; | 346 | return; | ||
345 | } | 347 | } | ||
346 | m_waylandOutput->setCurrentMode(QSize(m_mode.hdisplay, m_mode.vdisplay), refreshRateForMode(&m_mode)); | 348 | m_waylandOutput->setCurrentMode(QSize(m_mode.hdisplay, m_mode.vdisplay), refreshRateForMode(&m_mode)); | ||
349 | if (m_xdgOutput) { | ||||
350 | m_xdgOutput->setLogicalSize(pixelSize() / m_scale); | ||||
351 | m_xdgOutput->done(); | ||||
352 | } | ||||
347 | } | 353 | } | ||
348 | ); | 354 | ); | ||
349 | m_waylandOutput->setManufacturer(m_waylandOutputDevice->manufacturer()); | 355 | m_waylandOutput->setManufacturer(m_waylandOutputDevice->manufacturer()); | ||
350 | m_waylandOutput->setModel(m_waylandOutputDevice->model()); | 356 | m_waylandOutput->setModel(m_waylandOutputDevice->model()); | ||
351 | m_waylandOutput->setPhysicalSize(m_physicalSize); | 357 | m_waylandOutput->setPhysicalSize(m_physicalSize); | ||
352 | 358 | | |||
353 | // set dpms | 359 | // set dpms | ||
354 | if (!m_dpms.isNull()) { | 360 | if (!m_dpms.isNull()) { | ||
▲ Show 20 Lines • Show All 419 Lines • ▼ Show 20 Line(s) | |||||
774 | { | 780 | { | ||
775 | m_globalPos = pos; | 781 | m_globalPos = pos; | ||
776 | if (m_waylandOutput) { | 782 | if (m_waylandOutput) { | ||
777 | m_waylandOutput->setGlobalPosition(pos); | 783 | m_waylandOutput->setGlobalPosition(pos); | ||
778 | } | 784 | } | ||
779 | if (m_waylandOutputDevice) { | 785 | if (m_waylandOutputDevice) { | ||
780 | m_waylandOutputDevice->setGlobalPosition(pos); | 786 | m_waylandOutputDevice->setGlobalPosition(pos); | ||
781 | } | 787 | } | ||
788 | if (m_xdgOutput) { | ||||
789 | m_xdgOutput->setLogicalPosition(pos); | ||||
790 | m_xdgOutput->done(); | ||||
791 | } | ||||
782 | } | 792 | } | ||
783 | 793 | | |||
784 | void DrmOutput::setScale(qreal scale) | 794 | void DrmOutput::setScale(qreal scale) | ||
785 | { | 795 | { | ||
786 | m_scale = scale; | 796 | m_scale = scale; | ||
787 | if (m_waylandOutput) { | 797 | if (m_waylandOutput) { | ||
788 | m_waylandOutput->setScale(scale); | 798 | m_waylandOutput->setScale(scale); | ||
789 | } | 799 | } | ||
790 | if (m_waylandOutputDevice) { | 800 | if (m_waylandOutputDevice) { | ||
791 | m_waylandOutputDevice->setScale(scale); | 801 | m_waylandOutputDevice->setScale(scale); | ||
792 | } | 802 | } | ||
803 | if (m_xdgOutput) { | ||||
804 | m_xdgOutput->setLogicalSize(pixelSize() / m_scale); | ||||
805 | m_xdgOutput->done(); | ||||
806 | } | ||||
793 | } | 807 | } | ||
794 | 808 | | |||
795 | void DrmOutput::setChanges(KWayland::Server::OutputChangeSet *changes) | 809 | void DrmOutput::setChanges(KWayland::Server::OutputChangeSet *changes) | ||
796 | { | 810 | { | ||
797 | m_changeset = changes; | 811 | m_changeset = changes; | ||
798 | qCDebug(KWIN_DRM) << "set changes in DrmOutput"; | 812 | qCDebug(KWIN_DRM) << "set changes in DrmOutput"; | ||
799 | commitChanges(); | 813 | commitChanges(); | ||
800 | } | 814 | } | ||
▲ Show 20 Lines • Show All 498 Lines • Show Last 20 Lines |