Reported issue on watchface...where to look?

I received the following feedback on my countdown watchface:

https://apps.garmin.com/en-US/apps/c5fca1e4-7f91-486b-bccb-281e4efb17d1

"this watch face slows down the watch notifications and sometimes it doesn't even shows"

Out of a total of over 1000 downloads across all my countdown watchfaces (same code base), this is the first of this kind of feedback.
Is it possible that it could be firmware issue on user's watch?
Bluetooth issues?

Any tips for optimizing code and memory management etc?
  • Any idea how long it takes to render the watch face? Since the update/display is the only thing a watch face can really do, that is probably where the problem lies.
  • Any idea how long it takes to render the watch face? Since the update/display is the only thing a watch face can really do, that is probably where the problem lies.


    What is the best way to determine this? Should I put in a timer and print the value?
  • I haven't profiled any code in MonkeyC, but you need a time source that updates continuously. I'm not sure if Sys.getTimer() is up to the task or not. Assuming it is, you should be able to do this to dump the timings to the console (or the application log if running on a device).

    function onUpdate(dc) {
    var begin = Sys.getTimer();

    // all of your rendering code

    Sys.println((Sys.getTimer() - begin).format("%d"));
    }
  • I haven't profiled any code in MonkeyC, but you need a time source that updates continuously. I'm not sure if Sys.getTimer() is up to the task or not. Assuming it is, you should be able to do this to dump the timings to the console (or the application log if running on a device).

    function onUpdate(dc) {
    var begin = Sys.getTimer();

    // all of your rendering code

    Sys.println((Sys.getTimer() - begin).format("%d"));
    }

    it works. But makes sure u do it on actual hardware. Sim doesn't work. Gets u a FAST number vs the watch.
  • it works. But makes sure u do it on actual hardware. Sim doesn't work. Gets u a FAST number vs the watch.


    How do I obtain println output on the actual watch?

    EDIT:
    Sorry, IGNORE.
    I missed the part about the application log.

    ;)
  • I am very happy to report that I managed to resolve the issue.

    It was confirmed to be an issue on the fenix3 device.
    I then fine combed the code and decided that the issue must be with the rendering of the arcs that I use on round watches for displaying the Move Bar Level.
    This is the only big difference from square watches.

    I then changed the drawing routine to make use of pre-compiled bitmaps instead of polygons.
    The polygon drawing routine was what slowed down everything.

    I do not own a fenix3 and couldn't test / troubleshoot myself, so it was a shot in the dark.
    Fortunately the user who reported it has already tested and said it is much better now.

    Yay!