What's the dc update rate for progress bar?

In the simulator I can set the progress of a progress bar with a timer every 50ms to lets say progress += 1 and the dc gets updated smoothly, but on my Fenix 7 Pro it looks like it's updating only every second. Is this the expected behaviour? Is this device specific? Can I call WatchUi.requestUpdate() in the timer callback or something similar to increase the rate at which the dc gets updated?

Top Replies

  • on my Fenix 7 Pro it looks like it's updating only every second.

    Yeah I see the same thing with a real FR955.

    I tried changing the progress bar value once every 50 ms and it works great…

All Replies

  • on my Fenix 7 Pro it looks like it's updating only every second.

    Yeah I see the same thing with a real FR955.

    I tried changing the progress bar value once every 50 ms and it works great in the simulator (the progress bar is smoothly updated). On my real FR955, the view only appears to be refreshed about once per second. (Funnily enough, the indeterminate (busy) mode of the progress bar clearly animates itself faster than once per second.)

    I tried calling WatchUi.requestUpdate() at the same time as I set the progress, but that doesn't do anything.

    If you need fast updates, I think your only choice is to create your own progress bar view. Or if your progress is gonna go so fast that it typically updates once per 50 ms, you could also consider just using a "busy" progress bar (set the progress to null). At least it will animate quickly.

  • That's unfortunate. I guess I should file a bug report. Thanks for your feedback though! 

  • What you see on the real device is correct for a native view like this, and the bug is actually in the sim, is my opinion.

    On a real device, it takes more that 50ms to update the screen.  You can see this with onPartialUpdate on a MIP device where you don't set a clip region and "view watch face diagnostics" in low power, where you are limited to an avg of 30ms per update.

  • What you see on the real device is correct for a native view like this,

    This is kind of circular reasoning. You are saying that what's on the real device is correct because that's how the real device behaves.

    Ofc the behaviour of native views is always correct if that's your built-in assumption (in the absence of some issue that's unambigously a bug).

    Ofc it's a bug that the sim doesn't behave like the real device.

    But what we are saying is that the real device doesn't necessarily have to behave the way it does.

    Like I said, the indeterminate (busy) state of the progress bar clearly updates faster than once per second. (This is the state of the progress bar when the progress bar is set to null). It may not be as fast as once per 50 ms, but it's definitely faster than once per second.

    You can see this very simply by trying out the progress bar in both modes: indeterminate (progress value set to null) and determinate (progress value set to a number).

    The indeterminate progress bar will smoothly animate (clearly faster than 1 frame per second), but the determinate progress bar wlll only animate at about 1 frame per second no matter how fast you change the progress value.

    To be clear: the indeterminate mode of the progress bar animates much faster than the determinate mode.

    There are clearly many things on a Garmin device's built-in UI that update faster than once per second, even on a MIP device. They may not update at as fast as once every 50 ms, but they definitely update faster than once per second. 

    You can also see this by simply swiping on a MIP watch with a touchscreen and seeing how the display scrolls fairly smoothly (ofc not as smoothly as it would on a regular LCD or AMOLED device). Or by writing an app that changes the display faster than once per second.

    Even on a MIP device, Garmin's built-in stopwatch shows 100ths of seconds (2 decimal places). You can also write your own stopwatch app that displays 10ths or 100ths or seconds.

    Again, maybe the display isn't being updated once per 50 ms, but it's definitely being updated faster than once per second. 

    TL;DR there's a huge grey area between updating things once per second and updating things once per 50 ms. If my Garmin watch could only update the screen once per second, I would probably throw it in the trash. Things like the touchscreen interface would be very unpleasant to use.

  • This is why you want to test on a real device, as the sim doesn't always work like a real device.

    And in a case like this, they won't update the FW on all the real devices so it works like the sim with a progress bar and a native view.

    This isn't a stopwatch app.