Hello,

Like you found out, category 2 are all QWidget apps. The advanced stuff in 
eglfs (like multiscreen, cloning, and such) may not be fully supported for the 
QWidget stack as the primary target on embedded is Qt Quick. You need to poke 
around in qtbase/src/platformsupport/platformcompositor and 
qtbase/src/plugins/platforms/eglfs if you want to enhance the support for this.
 
Best regards,
Laszlo

-----Original Message-----
From: Interest <interest-boun...@qt-project.org> On Behalf Of Mylène Josserand
Sent: Friday, December 14, 2018 3:16 PM
To: inter...@lists.qt-project.org
Cc: Thomas Petazzoni <thomas.petazz...@bootlin.com>
Subject: [Interest] Qt examples and primary screen

Hello everyone,

I need some hints about some behaviors I have while running Qt examples. Here 
is my setup:
   - a custom embedded platform based on IMX6
   - Qt 5.11
   - 2 displays: HDMI and LVDS
   - a touchscreen on top of the LVDS
   - want to be able to use only LVDS, only HDMI or both LVDS and HDMI
     with cloning
   - OpenGL support

To be able to choose between the different displays, we use json files, 
exported with QT_QPA_EGLFS_KMS_CONFIG variable:

    - Both LVDS and HDMI:
        {
          "device": "/dev/dri/card1",
          "outputs": [
              {"name": "HDMI1", "mode": "1024x768", "primary":
              false, "clones": "LVDS1" },
              { "name": "LVDS1", "mode": "1024x768", "primary": true } ]
        }

   - only LVDS:
        { "device": "/dev/dri/card1", 
          "outputs": [
             { "name": "HDMI1", "mode": "1920x1080", "primary": false },
             { "name": "LVDS1", "mode": "1024x768", "primary": true } ]
        }

   - only HDMI:
        { "device":"/dev/dri/card1", 
          "outputs": [
             { "name": "HDMI1", "mode": "1920x1080", "primary": true },
             { "name": "LVDS1", "mode": "1024x768", "primary": false } ]
        }

After testing Qt examples, I noticed two different behaviors:
   1.) Cloning is working fine, touchscreen is working on every
   configuration: on "Qt5_CinematicExperience" and "hellowindow"
   2.) Cloning is not working, touchscreen is working only on HDMI's
   setup and application is shown on HDMI when LVDS is the primary
   screen: on "hellogl2", "contextinfo", "cube"

The second case is the one I need help with. On these examples, I got the 
following behaviors according to the primary screen used:

    - Cloning LVDS on HDMI reports an error:
        "Screen HDMI1 clones another screen. swapBuffers() not allowed."

    - HDMI as primary: everything works correctly. The application is
      shown on HDMI display and the touchscreen is working fine.

    - LVDS as primary: the application is shown on HDMI instead of LVDS
      as expected. The touchscreen is not working at all.

We looked at these examples and they do not seem to use QML or QWindow. They 
are using a QWidget and it seems that it is not taken into account the primary 
screen. According to QWindow's description, this is normal for an application 
to use a QWidget directly.

http://doc.qt.io/qt-5/qwindow.html
"An application will typically use QWidget or QQuickView for its UI, and not 
QWindow directly."

Is it correct?
What should we implement to have the same behavior on examples that are using 
QWidget than the ones using a QWindow (such as "hellowindow")? Is it possible?


Thank you in advance for any help!

Mylène

--
Mylène Josserand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to