Ticket Created
over 5 years ago

WERETECH-8376

FR45 fades watch-face black

Hi, my watch-face fades to black immediately and only shows after the gesture of looking to the watch on FR45s. 

Next video shows that Garmin for some reason fades the watch, because it takes 4 frames to hide and show it. There's no such functionality in the watch face itself: 

https://drive.google.com/file/d/0B98rO91GOxZrQ2ZmYTVEOVUtb0FXQlZjZUtzam9NejhKdS1V/view?usp=sharing

What causes it and how to fix it? The problem seems to be only on FR45 and user reports that other watch faces run fine. 

It is as simple as in the video, just hours, minutes and an arc. No seconds shown. Battery consumption with such settings is better than on the stock watch faces. 

Thanks for hints what might be wrong. 

Edit: culprit found: some devices (FR45, FR630, Vivoactive4) clear the screen with every watch-face onUpdate if you don't completely re-render the whole screen. On most of the other devices it works as intended, meaning the screen persists unless you clear it. 

  • The underlying idea was to prevent the watch from re-rendering the whole screen when nothing changed to conserve the battery as it doesn't show seconds. 

    When max data is configured to show on the screen the screen can take 4x times to render resulting in double memory consumption per hour (when no sensors active). 

    These are just simple observations that might not be precise. I don't actually know how using processor time drains the battery. 

  • Also, you want to update the screen on every call to onUpdate(), as something like a notification could have occurred where part of the screen could have been cleared.

  • I'm not sure I'd bother doing anything in onShow() and onHide().

    My normal onEnterSleep() is:

    inLowPower=true;

    Ui.requestUpdate()

    and for onExitSleep, just set inLowPower =false;

    Then just use inLowPower in onUpdate to decide what to do.

  • Interesting. That would mean this watch needs to redraw the complete watch face when switching to a low-power mode instead of just keeping the current screen unchanged. 

    I am surprised just the commenting the line is enough. In such case I would expect there must be the redrawAll=1 set to work reliably. 

    Many thanks for your investigation. I appreciate your effort. 

  • I downloaded the source from github, and saw this on my own fr45.  The screen is blanking when onEnterSleep() is called, and if I comment out the one line of code there, it runs fine.

    OnExitSleep()/onEnterSleep() is when the watch changes between high power (onUpdate() called every second) and low power (onUpdate() called every minute).  Remember, while the fr45 is a new watch, it's running CIQ1 so there might be something with that