summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/deviceintegration
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-08-09 17:59:51 +0200
committerLiang Qi <liang.qi@qt.io>2016-08-09 17:59:51 +0200
commit22e96c4d342de3bfe4fc27f4cd7233edcfe737cc (patch)
tree6bdd02cdd8603cf16383fb339a2cfdbce82491da /src/plugins/platforms/eglfs/deviceintegration
parentbd79c4e28c307ba87aca02155b845774c7ffec1f (diff)
parentfa95eb055401f5264cbc6aca761cb9b5feb4affc (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Diffstat (limited to 'src/plugins/platforms/eglfs/deviceintegration')
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp
index 363fce2214..4e811a1dfe 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp
@@ -93,9 +93,23 @@ void QEglFSBrcmIntegration::platformInit()
bcm_host_init();
}
+static int getDisplayId()
+{
+ // As defined in vc_dispmanx_types.h
+ // DISPMANX_ID_MAIN_LCD 0
+ // DISPMANX_ID_AUX_LCD 1
+ // DISPMANX_ID_HDMI 2
+ // DISPMANX_ID_SDTV 3
+ // DISPMANX_ID_FORCE_LCD 4
+ // DISPMANX_ID_FORCE_TV 5
+ // DISPMANX_ID_FORCE_OTHER 6 /* non-default display */
+ static const int dispmanxId = qEnvironmentVariableIntValue("QT_QPA_EGLFS_DISPMANX_ID");
+ return (dispmanxId >= 0 && dispmanxId <= 6) ? dispmanxId : 0;
+}
+
EGLNativeDisplayType QEglFSBrcmIntegration::platformDisplay() const
{
- dispman_display = vc_dispmanx_display_open(0/* LCD */);
+ dispman_display = vc_dispmanx_display_open(getDisplayId());
return EGL_DEFAULT_DISPLAY;
}
@@ -107,7 +121,7 @@ void QEglFSBrcmIntegration::platformDestroy()
QSize QEglFSBrcmIntegration::screenSize() const
{
uint32_t width, height;
- graphics_get_display_size(0 /* LCD */, &width, &height);
+ graphics_get_display_size(getDisplayId(), &width, &height);
return QSize(width, height);
}