Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-97039

Slow Draw of CircularGauge and Gauge's TickMarks when using SwipeView with a Loader

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • P2: Important
    • None
    • 5.15.5
    • Quick: Controls 2
    • None
    • Windows 10, Qt 5.15 with Qt Creator 5.0.0, Boot2Qt v5.15.5 for RaspberryPi 3 Mingw32
    • Linux/Yocto

    Description

      I'm reporting slow draw of Qt Extras CircularGauges and Gauges on SwipeView screens on a Raspberry Pi 3B using Boot2Qt.

      I'm using a mixture of gauge designs using ShapePath as well as Qt Extras CircularGauge and Gauge. However when swiping screens with CircularGuage and/or Gauge on them there is a noticeable delay in gauges being drawn. In particular the TickMarks and MinorTickMarks. This occurs on a Raspberry Pi Model 3B which is nearer in performance to our future devices than a desktop PC. I do not notice slow gauge draw on the Desktop but it is very noticeable on the Raspberry Pi both via an HDMI connected monitor and the Raspberry Pi official 7" touchscreen LCD. Screens with gauges based on ShapePath swipe as expected with no delay in drawing.

      I'm limiting how many screens are loaded into our SwipeView using a Loader and the 'active: SwipeView.isCurrent or isNextItem or isPrevious, because we want to limit app CPU usage by updating too many screens at once from our C++ backend.

      But if I swipe too fast for the Loader to load the Gauges screens into the SwipeView then we see the noticeable delay in Gauge drawing on screen. If I wait long enough between screen swipes for the Loader to load the screen, then the next/previous screen swipes into view with the Gauges already drawn.

      One thing we have tried is adding 'visible: status == Loader.Ready' to the SwipeView's Loader. But all this does is blank the screen being swiped into view and it is only then  displayed when the Gauges have been fully constructed. It's not an ideal solution to blank a screen when the SwipeView is so good at allowing the contents swiped pages to be seen as they are swiped.

      If I disable the TickMarks using CircularGaugeStyle and add a background image to my CircularGauges then the screens with gauges on swipe nicely with no visible delay in their drawing on screen (I can't hide Gauge Tickmarks with styles). However we do not want to use a background image and have to 'calibrate' the needle to any tickmarks and labels on a background image. We would like the flexibility of configuring a gauge's parameters.

      Having analysed the screens with QML Profiler it is obvious that the TickMarks and in particular MinorTickMarks are the items slowing up the construction of the gauges. Their display and rotation is taking up all the UI processing.

       

      Has anybody else reported this as a noticeable drawing issue on target devices?

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              rampe Rami Potinkara
              peterg Peter Grant
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes