diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2016-08-09 10:08:46 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2016-08-11 21:11:32 +0000 |
commit | 2afead0211302799519abee5c164ae0602a7e13b (patch) | |
tree | 18e301e7b779d59b8e0e8136e9b9352f9a683bd9 /src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp | |
parent | ce2419af895eb303f4d44e85e20dc97fcd52cfd2 (diff) |
eglfs: Configurable screen order in the virtual desktop
Say one wants a virtual desktop with the display on HDMI above
the display on DisplayPort:
{
"device": "drm-nvdc",
"virtualDesktopOrientation": "vertical",
"outputs": [
{
"name": "HDMI1",
"virtualIndex": 0
},
{
"name": "DP1"
}
]
}
Undefined virtualIndex values map to INT_MAX and will go after the
explicitly specified ones. However, the sorting is stable so the original
order from the DRM connector list is preserved between such outputs.
Task-number: QTBUG-55188
Change-Id: I204fb08205ea7dbfbcdefd1d22ed22f5387f3e8c
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp')
-rw-r--r-- | src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp index 55417e4525..f690cd668e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp @@ -71,13 +71,11 @@ private: QEglFSKmsScreen::QEglFSKmsScreen(QEglFSKmsIntegration *integration, QEglFSKmsDevice *device, - QEglFSKmsOutput output, - QPoint position) + QEglFSKmsOutput output) : QEglFSScreen(eglGetDisplay(device->nativeDisplay())) , m_integration(integration) , m_device(device) , m_output(output) - , m_pos(position) , m_powerState(PowerStateOn) , m_interruptHandler(new QEglFSKmsInterruptHandler(this)) { @@ -98,34 +96,19 @@ QEglFSKmsScreen::~QEglFSKmsScreen() delete m_interruptHandler; } +void QEglFSKmsScreen::setVirtualPosition(const QPoint &pos) +{ + m_pos = pos; +} + // Reimplement rawGeometry(), not geometry(). The base class implementation of // geometry() calls rawGeometry() and may apply additional transforms. QRect QEglFSKmsScreen::rawGeometry() const { const int mode = m_output.mode; - QRect r(m_pos.x(), m_pos.y(), - m_output.modes[mode].hdisplay, - m_output.modes[mode].vdisplay); - - static int rotation = qEnvironmentVariableIntValue("QT_QPA_EGLFS_ROTATION"); - switch (rotation) { - case 0: - case 180: - case -180: - break; - case 90: - case -90: { - int h = r.height(); - r.setHeight(r.width()); - r.setWidth(h); - break; - } - default: - qWarning("Invalid rotation %d specified in QT_QPA_EGLFS_ROTATION", rotation); - break; - } - - return r; + return QRect(m_pos.x(), m_pos.y(), + m_output.modes[mode].hdisplay, + m_output.modes[mode].vdisplay); } int QEglFSKmsScreen::depth() const |