eglfs: Allow setting screen size through environment variables.
authorRobin Burchell <robin.burchell@collabora.co.uk>
Thu, 5 Jul 2012 12:44:22 +0000 (14:44 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 5 Jul 2012 22:37:39 +0000 (00:37 +0200)
This adds:
- QT_QPA_EGLFS_WIDTH
- QT_QPA_EGLFS_HEIGHT

If both are set, fb0 detection is completely bypassed, otherwise, the
environment variables act as an override for the fb0 values.

Change-Id: Iaf38c8b0d40ce0a921bb6c5dbf31af788802d3fa
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
src/plugins/platforms/eglfs/qeglfshooks_stub.cpp

index 25bf1fd..3c944e6 100644 (file)
@@ -66,6 +66,16 @@ QSize QEglFSHooks::screenSize() const
     static QSize size;
 
     if (size.isEmpty()) {
+        int width = qgetenv("QT_QPA_EGLFS_WIDTH").toInt();
+        int height = qgetenv("QT_QPA_EGLFS_HEIGHT").toInt();
+
+        if (width && height) {
+            // no need to read fb0
+            size.setWidth(width);
+            size.setHeight(height);
+            return size;
+        }
+
         struct fb_var_screeninfo vinfo;
         int fd = open("/dev/fb0", O_RDONLY);
 
@@ -79,6 +89,12 @@ QSize QEglFSHooks::screenSize() const
         } else {
             qWarning("Failed to open /dev/fb0 to detect screen resolution.");
         }
+
+        // override fb0 from environment var setting
+        if (width)
+            size.setWidth(width);
+        if (height)
+            size.setHeight(height);
     }
 
     return size;