InfiniTimeOrg / InfiniTime

Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
GNU General Public License v3.0
2.72k stars 928 forks source link

Timer end + other app open = display corruption #445

Closed Itai-Nelken closed 2 years ago

Itai-Nelken commented 3 years ago

Setting a timer and then starting the stopwatch causes the image to shift up when the timer opens when it ends.

Riksu9000 commented 3 years ago

Can confirm, pretty spooky. Stopwatch doesn't even need to be running, the app just needs to be open. EDIT: This happens with other apps too, so it isn't an issue with stopwatch.

corruption

Raupinger commented 3 years ago

Honestly, I'm clueless on this one so far. The way the timer gets opened is mostly identical to how notification previews are. Those don't break. I also don't see a pattern in which apps show the issue and which don't. Works: Clock, Screen List, Quick Settings, Steps, Meter, System Info, Display Timeouts, Wake up, Time Format Doesn't work: Stopwatch, Music, Settings List, Heart Rate, Navigation, Paint, Pong Additionally, some apps don't work on older branches but do on current develop.

kieranc commented 3 years ago

I can also confirm this bug, the display remained shifted up until I rebooted.

JF002 commented 3 years ago

Wow that's not good! Is there an easy way to reproduce this issue? On which versions/commit does this happen?

ghost commented 3 years ago

Easy way to reproduce bug:

  1. Start timer
  2. Move to any app*
  3. Wait for timer to go off
  4. Bug is reproduced reliably (v1.2.0) Note: Works with screen on or off, doesn't matter either way. *Does not work with the Steps app, 2048, or the Accelerometer app.
Itai-Nelken commented 3 years ago

I confirm that this doesn't happen with the 2048 and accelerometer apps.

JF002 commented 3 years ago

@hamblingreen thanks for the procedure! I can indeed reproduce the issue! This is kind of funny result :D We probably have a issue (data race?) around the hardware scrolling implementation (https://github.com/JF002/InfiniTime/blob/develop/src/displayapp/LittleVgl.cpp#L83)

Bloodaxe95 commented 3 years ago

Not sure if this is the right place, but this bug is still present in 1.3.0 of InfiniTime. At least I could reliably reproduce it on my sealed PineTime.

ghost commented 3 years ago

New way to reproduce something similar:

  1. navigate to menu containing the Draw app
  2. tap the draw icon twice quickly (this takes a few tries to get the timing down)
  3. screen is slightly shifted up, and a restart fixes it.

Video too big to upload

tmilburn commented 3 years ago

This must come down to how LVGL is drawing to the screen (see https://docs.lvgl.io/master/overview/drawing.html) and the comments at #466.

I think the scrolling behaviour needs a bit of a rethink and should probably use lv_scr_load_anim https://docs.lvgl.io/latest/en/html/overview/display.html#_CPPv416lv_scr_load_animP8lv_obj_t18lv_scr_load_anim_t8uint32_t8uint32_tb

ghost commented 3 years ago

Can confirm (as expected) not fixed by 1.4

RiderExMachina commented 3 years ago

Still an issue on 1.6.0.

Quantum-cross commented 3 years ago

Can yall try #731 ?

SteveAmor commented 2 years ago

Still an issue on v1.8