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 126 Lines • ▼ Show 20 Line(s) | 176 | { | |||
176 | if (m_orientation == Qt::PortraitOrientation || m_orientation == Qt::InvertedPortraitOrientation) { | 177 | if (m_orientation == Qt::PortraitOrientation || m_orientation == Qt::InvertedPortraitOrientation) { | ||
177 | return QSize(m_physicalSize.height(), m_physicalSize.width()); | 178 | return QSize(m_physicalSize.height(), m_physicalSize.width()); | ||
178 | } | 179 | } | ||
179 | return m_physicalSize; | 180 | return m_physicalSize; | ||
180 | } | 181 | } | ||
181 | 182 | | |||
182 | QRect DrmOutput::geometry() const | 183 | QRect DrmOutput::geometry() const | ||
183 | { | 184 | { | ||
184 | return QRect(m_globalPos, pixelSize() / scale()); | 185 | return QRect(m_globalPos, pixelSize() / m_scale); | ||
185 | } | 186 | } | ||
186 | 187 | | |||
187 | qreal DrmOutput::scale() const | 188 | qreal DrmOutput::scale() const | ||
188 | { | 189 | { | ||
189 | return m_scale; | 190 | return m_scale; | ||
190 | } | 191 | } | ||
191 | 192 | | |||
192 | void DrmOutput::setEnabled(bool enabled) | 193 | void DrmOutput::setEnabled(bool enabled) | ||
▲ Show 20 Lines • Show All 146 Lines • ▼ Show 20 Line(s) | |||||
339 | void DrmOutput::initOutput() | 340 | void DrmOutput::initOutput() | ||
340 | { | 341 | { | ||
341 | Q_ASSERT(m_waylandOutputDevice); | 342 | Q_ASSERT(m_waylandOutputDevice); | ||
342 | if (!m_waylandOutput.isNull()) { | 343 | if (!m_waylandOutput.isNull()) { | ||
343 | delete m_waylandOutput.data(); | 344 | delete m_waylandOutput.data(); | ||
344 | m_waylandOutput.clear(); | 345 | m_waylandOutput.clear(); | ||
345 | } | 346 | } | ||
346 | m_waylandOutput = waylandServer()->display()->createOutput(); | 347 | m_waylandOutput = waylandServer()->display()->createOutput(); | ||
348 | m_xdgOutput = waylandServer()->xdgOutputManager()->createXdgOutput(m_waylandOutput, m_waylandOutput); | ||||
347 | connect(this, &DrmOutput::modeChanged, this, | 349 | connect(this, &DrmOutput::modeChanged, this, | ||
348 | [this] { | 350 | [this] { | ||
349 | if (m_waylandOutput.isNull()) { | 351 | if (m_waylandOutput.isNull()) { | ||
350 | return; | 352 | return; | ||
351 | } | 353 | } | ||
352 | m_waylandOutput->setCurrentMode(QSize(m_mode.hdisplay, m_mode.vdisplay), refreshRateForMode(&m_mode)); | 354 | m_waylandOutput->setCurrentMode(QSize(m_mode.hdisplay, m_mode.vdisplay), refreshRateForMode(&m_mode)); | ||
355 | if (m_xdgOutput) { | ||||
356 | m_xdgOutput->setLogicalSize(pixelSize() / m_scale); | ||||
357 | m_xdgOutput->done(); | ||||
358 | } | ||||
353 | } | 359 | } | ||
354 | ); | 360 | ); | ||
355 | m_waylandOutput->setManufacturer(m_waylandOutputDevice->manufacturer()); | 361 | m_waylandOutput->setManufacturer(m_waylandOutputDevice->manufacturer()); | ||
356 | m_waylandOutput->setModel(m_waylandOutputDevice->model()); | 362 | m_waylandOutput->setModel(m_waylandOutputDevice->model()); | ||
357 | m_waylandOutput->setPhysicalSize(m_physicalSize); | 363 | m_waylandOutput->setPhysicalSize(m_physicalSize); | ||
358 | 364 | | |||
359 | // set dpms | 365 | // set dpms | ||
360 | if (!m_dpms.isNull()) { | 366 | if (!m_dpms.isNull()) { | ||
▲ Show 20 Lines • Show All 419 Lines • ▼ Show 20 Line(s) | |||||
780 | { | 786 | { | ||
781 | m_globalPos = pos; | 787 | m_globalPos = pos; | ||
782 | if (m_waylandOutput) { | 788 | if (m_waylandOutput) { | ||
783 | m_waylandOutput->setGlobalPosition(pos); | 789 | m_waylandOutput->setGlobalPosition(pos); | ||
784 | } | 790 | } | ||
785 | if (m_waylandOutputDevice) { | 791 | if (m_waylandOutputDevice) { | ||
786 | m_waylandOutputDevice->setGlobalPosition(pos); | 792 | m_waylandOutputDevice->setGlobalPosition(pos); | ||
787 | } | 793 | } | ||
794 | if (m_xdgOutput) { | ||||
795 | m_xdgOutput->setLogicalPosition(pos); | ||||
796 | m_xdgOutput->done(); | ||||
797 | } | ||||
788 | } | 798 | } | ||
789 | 799 | | |||
790 | void DrmOutput::setScale(qreal scale) | 800 | void DrmOutput::setScale(qreal scale) | ||
791 | { | 801 | { | ||
792 | m_scale = scale; | 802 | m_scale = scale; | ||
793 | if (m_waylandOutput) { | 803 | if (m_waylandOutput) { | ||
794 | m_waylandOutput->setScale(scale); | 804 | m_waylandOutput->setScale(scale); | ||
795 | } | 805 | } | ||
796 | if (m_waylandOutputDevice) { | 806 | if (m_waylandOutputDevice) { | ||
797 | m_waylandOutputDevice->setScale(scale); | 807 | m_waylandOutputDevice->setScale(scale); | ||
798 | } | 808 | } | ||
809 | if (m_xdgOutput) { | ||||
810 | m_xdgOutput->setLogicalSize(pixelSize() / m_scale); | ||||
811 | m_xdgOutput->done(); | ||||
812 | } | ||||
799 | } | 813 | } | ||
800 | 814 | | |||
801 | void DrmOutput::setChanges(KWayland::Server::OutputChangeSet *changes) | 815 | void DrmOutput::setChanges(KWayland::Server::OutputChangeSet *changes) | ||
802 | { | 816 | { | ||
803 | m_changeset = changes; | 817 | m_changeset = changes; | ||
804 | qCDebug(KWIN_DRM) << "set changes in DrmOutput"; | 818 | qCDebug(KWIN_DRM) << "set changes in DrmOutput"; | ||
805 | commitChanges(); | 819 | commitChanges(); | ||
806 | } | 820 | } | ||
▲ Show 20 Lines • Show All 498 Lines • Show Last 20 Lines |