From f8fdeb68b6e1a710438fc9084a2a3b1b9b6744fa Mon Sep 17 00:00:00 2001 From: anknight Date: Thu, 14 Feb 2013 14:52:58 +0200 Subject: KMS QPA Plugin: use preferred mode when selecting mode This should select the best mode (likely the currently running mode) for the display instead of the first one found. The built-in mode was left as a fallback. Change-Id: I4e1bc798df6f310b001566ab76cb9def3224a7ed Reviewed-by: Andy Nichols --- src/plugins/platforms/kms/qkmsscreen.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/kms/qkmsscreen.cpp b/src/plugins/platforms/kms/qkmsscreen.cpp index 123dcc283f..892f7bb01f 100644 --- a/src/plugins/platforms/kms/qkmsscreen.cpp +++ b/src/plugins/platforms/kms/qkmsscreen.cpp @@ -124,10 +124,14 @@ void QKmsScreen::initializeScreenMode() drmModeConnector *connector = drmModeGetConnector(m_device->fd(), m_connectorId); drmModeModeInfo *mode = 0; - if (connector->count_modes > 0) - mode = &connector->modes[0]; - else - mode = &builtin_1024x768; + for (int i = 0; i < connector->count_modes; ++i) { + if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) { + mode = &connector->modes[i]; + break; + } + } + if (!mode) + mode = mode = &builtin_1024x768; drmModeEncoder *encoder = drmModeGetEncoder(m_device->fd(), connector->encoders[0]); if (encoder == 0) -- cgit v1.2.3